Witam, mam zadanie typu porównanie czasów działania sortowania przez wybór w wersji sekwencyjnej, z podziałem na połówki (realizacja sekwencyjna) i w realizacji współbieżne (być może ze zrównolegleniem łączenia z sortowaniem). Zatrzymałem się przez wersji sekwencyjnej (nie wiem naawet co to znacz) z podziałem na połowki, takze problem mam z resztą zadania. Jedynie co mam to sortowanie przez wybór no i czasy wysyłąm kod progrmau.
#include<iostream>
#include<cstdlib>
#include <ctime>
#include <cstdio>
using namespace std;
void czekaj( int iMilisekundy );
void selection_sort(int tab[],int n);
double obliczSekundy( clock_t czas );
int main()
{
int *tab, n;
cout<<"Ile liczb chcesz posortowac? ";
cin>>n;
printf( "Uruchomilem aplikacje -> %.4fsek\n", obliczSekundy( clock() ) );
tab = new int [n];
for(int i=0;i<n;i++)
cin>>tab[i]; //wczytanie liczb do posortowania
printf( "Wpisalem dane -> %.4fsek\n", obliczSekundy( clock() ) );
selection_sort(tab,n); //sortowanie przez selekcję
for(int i=0;i<n;i++)
cout<<tab[i]<<" "; //wypisanie posortowanych elementów
printf( "Czas wykonania sortowania -> %.4fsek\n", obliczSekundy( clock() ) );
cout<<endl;
printf( "Calkowity czas %.4fsek od jej startu.\n", obliczSekundy( clock() ) );
system("pause");
return 0;
}
void selection_sort(int tab[],int n) //n - ilość elementów do posortowania
{
int mn_index; //zmienna pomocnicza przechowująca indeks komórki
//z minimalną wartością
for(int i=0;i<n-1;i++)
{
mn_index = i;
for(int j=i+1;j<n;j++) //pętla wyszukuje najmniejszy element w podzbiorze nieposortowanym
if(tab[j]<tab[mn_index])
mn_index = j;
//zamiana elementu najmniejszego w podzbiorze z pierwszą pozycją nieposortowaną
swap(tab[i], tab[mn_index]);
}
}
void czekaj( int iMilisekundy )
{
clock_t koniec = clock() + iMilisekundy * CLOCKS_PER_SEC / 1000.0;
while( clock() < koniec ) continue;
}
double obliczSekundy( clock_t czas )
{
return static_cast < double >( czas ) / CLOCKS_PER_SEC;
}