Witam,
Mam problem. Kiedy chcę aby moja tablica posiadała 1 000 000 elementów i definiuje to poprzez stałów program się wysypuje. Jak temu zaradzić?
Poniżej zamieszczam kod do zajęć z algorytmów sortowania.
#include <cmath>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
using namespace std;
const int N = 100000; // Liczebność zbioru.
void sortowanieWstawianie(int d[N]){
clock_t start, stop;
int x,i,j;
start = clock();
for(j = N - 2; j >= 0; j--)
{
x = d[j];
i = j + 1;
while((i < N) && (x > d[i]))
{
d[i - 1] = d[i];
i++;
}
d[i - 1] = x;
}
stop = clock();
float time=(stop - start)/CLK_TCK;
cout << "czas wynosi: " << time << endl;
}
int main()
{
int i,j, x;
int d[N];
//losjemy liczby od 1-100
//tablica nie uporzadkowana d
srand((unsigned)time(NULL));
for(i = 0; i < N; i++) d[i] = rand() % 10000+1;
// cout << "Tablica nieuporzadkowana: \n";
// for(i = 0; i < N; i++) cout << setw(4) << d[i];
// cout << endl;
cout << "nieuporzadkowany: ";
sortowanieWstawianie(d);
//tablica uporzadkowana
for(j = N - 2; j >= 0; j--)
{
x = d[j];
i = j + 1;
while((i < N) && (x > d[i]))
{
d[i - 1] = d[i];
i++;
}
d[i - 1] = x;
}
// cout << "Tablica uporzadkowana:\n";
// for(i = 0; i < N; i++) cout << setw(4) << d[i];
// cout << endl;
cout << "uporzadkowany: ";
sortowanieWstawianie(d);
//tablica uporządkowana odwrotnie
int odw[N];
int k=0;
int temp;
for(i=N-1;i>=0;i--){
temp = d[i];
odw[k] = temp;
k++;
}
// cout << "Tablica uporzadkowana odwrotnie:\n";
// for(i = 0; i < N; i++) cout << setw(4) << odw[i];
// cout << endl;
cout << "uporzadkowany odwrotnie: ";
sortowanieWstawianie(odw);
system("pause");
return 0;
}