Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C++ by Arek ( 17 years ago )
#include <ctime>
#include <iostream>
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
using namespace std;
int Liniowo(int t[],int ile,int sz_liczba){
for(int i=1;i < ile;i++){
if(sz_liczba == t[i]) {
break;
}
}
}
int Binarnie(int t[],int ile,int sz_liczba){
int k = sz_liczba;
int p = -1;
int L = 0;
int ik = ile - 1;
int ip = 0;
int isr;
while(ip <= ik)
{
L++;
isr = (ip + ik) >> 1;
if(t[isr] == k)
{
p = isr; break;
}
else if(k < t[isr])
ik = isr - 1;
else
ip = isr + 1;
}
}
int main(){
//typ danych potrzebny do liczenia sekund. posiada pola tv_sec i tv_usec.
//pierwsze z nich przechowuje sekundy a drugie mikrosekundy( 10^(-6) sekundy )
struct timeval tv;
struct timeval tv2;
struct timezone tz;
int czas;
/*unsigned long long*/ int sz_liczba;
/*unsigned long long*/ int ile;
//ile elementow w tablicy:
cout << "Ile elementów w tablicy?" << endl;
cin >> ile;
//jakiej liczby szukac:
cout << "Podaj szukana liczbe: " << endl;
cin >> sz_liczba;
//deklarujemy tablice 'ile' elementów typu INT
int *t;
t = new int[ile];
for (int i=0; i < ile; i++) {
t[i] = i;
}
//------------------------------------------------
//pobieramy bieżący czas (sekundy i mikrosekundy)
gettimeofday(&tv;, &tz;);
//wykonujemy funkcje Liniowo szukającą liczby najprostrzym sposobem:
Liniowo(t,ile,sz_liczba);
//pobieramy bieżący czas
gettimeofday(&tv2;, &tz;);
//------------------------------------------------
//liczymy czas jaki został wykorzystany na wykonanie (1)
czas = ((tv2.tv_sec*1000000)+tv2.tv_usec)-((tv.tv_sec*1000000)+tv.tv_usec);
//wypisujemy dane
cout << "Czas(algorytm liniowy): " << czas << "[usec]" << endl;
//------------------------------------------------
gettimeofday(&tv;, &tz;);
Binarnie(t,ile,sz_liczba);
gettimeofday(&tv2;, &tz;);
//------------------------------------------------
//liczymy czas jaki został wykorzystany na wykonanie (1)
czas = ((tv2.tv_sec*1000000)+tv2.tv_usec)-((tv.tv_sec*1000000)+tv.tv_usec);
//wypisujemy dane
cout << "Czas(algorytm połówkowy): " << czas << "[usec]" << endl;
}
Revise this Paste