witam muszę wykonać sortowania dla n=10 do 108 i nie wiem czy ja mam jakiś problem z kompilatorem bo przy 106 INSERTIONSORT trwa ponad 10 minut czyli nie ma możliwości aby doszło mi do 108+ nie wiem dlaczego ale po 106 program przechodzi do kolejnego sortu...
#include<iostream>
#include<vector>
#include<random>
#include<chrono>
#include<ctime>
using namespace std;
void selectionsort(vector<unsigned long >&v)
{
unsigned long min = 0;
unsigned long i, j;
for (i = 0; i < v.size()/2; i++) {
for (j = i; j < v.size() - 1; j++) {
if (v[j + 1] < v[j])
min = j + 1;
}
swap(v[i], v[min]);
}
}
void bubblesort(vector<unsigned long >&v) {
unsigned long i, j;
for(i=0;i<v.size();i++)
for (j = 1; j<v.size() -i; j++)
if(v[j-1]>v[j])
swap(v[j-1], v[j]);
}
void insertionsort(vector<unsigned long >&v) {
unsigned long i, j;
for (i = 1; i< v.size(); i++)
for (j = i; j>0; j--)
if (v[j]<v[j-1])
swap(v[j],v[j - 1]);
}
int main()
{
unsigned long i, j;
vector<unsigned long > v;
cout << "INSERTIONSORT" << endl;
for (i = 10; i < 100000000; i = i * 10)
{
v.resize(i);
for (j = 0; j < i; ++j)
v[j] = rand() % i;
std::chrono::time_point<std::chrono::system_clock> start, end;
start = std::chrono::system_clock::now();
insertionsort(v);
end = std::chrono::system_clock::now();
std::chrono::duration<long double> elapsed_seconds = end - start;
std::cout << i << " czas: " << elapsed_seconds.count() << "s\n";
}
cout << "BUBBLESORT" << endl;
for (i = 10; i < 100000000; i = i * 10)
{
v.resize(i);
for (j = 0; j < i; ++j)
v[j] = rand() % i;
std::chrono::time_point<std::chrono::system_clock> start, end;
start = std::chrono::system_clock::now();
bubblesort(v);
end = std::chrono::system_clock::now();
std::chrono::duration<long double> elapsed_seconds = end - start;
std::cout << i << " czas: " << elapsed_seconds.count() << "s\n";
}
cout << "SELECTIONSORT" << endl;
for (i = 10; i < 100000000; i = i * 10)
{
v.resize(i);
for (j = 0; j < i; ++j)
v[j] = rand() % i;
std::chrono::time_point<std::chrono::system_clock> start, end;
start = std::chrono::system_clock::now();
selectionsort(v);
end = std::chrono::system_clock::now();
std::chrono::duration<long double> elapsed_seconds = end - start;
std::cout << i << " czas: " << elapsed_seconds.count() << "s\n";
}
return 0;
}