Witam mam tu program przedstawiajacy 3 sortowania do wyboru.
Natomisat mam problem dorbny.
W programie jest : podaj rozmiar tablicy (czyli domyslnie ustala go użytkownik).
Natomisat jest ograniczony, nie można wybrac tablicy wiekszej niż 10;//
Chcialbym wiedziec czym to jest spowodowane i gdzie można to zmienic.
Pozdrawiem
#include <iostream>
#include <conio.h>
#include <ctime>
#include <stdlib.h>
using namespace std;
int rozmiar;
int m;
int nr_sort;
int sort_wyb (int tablica[], int n)
{
for(int i=0; i<=n-1; i++)
{
int min_index = i;
int min = tablica[i];
for(int j=i+1; j<n; j++)
if(tablica[j]<min)
{
min_index=j;
min=tablica[j];
}
tablica[min_index]=tablica[i];
tablica[i]=min;
}
return 0;
}
int sort_wstaw (int tablica[], int n)
{
for (int i=1; i<n; i++)
{
int j=i;
int k=tablica[i];
while(tablica[j-1]>k && j>0)
{
tablica[j]=tablica[j-1];
j--;
}
tablica[j]=k;
}
return 0;
}
int mergesort(int tablica[], int pocz, int kon)
{
int srodek;
int temp[rozmiar];
srodek=(pocz+kon+1)/2;
if(srodek-pocz > 1)
mergesort(tablica, pocz, srodek-1);
if(kon-srodek > 0)
mergesort(tablica, srodek, kon);
int j=pocz;
int k=srodek;
for(int i=pocz; i<=kon; i++)
temp[i]=(j==srodek || (k<=kon && tablica[j]>tablica[k])) ? tablica[k++] : tablica[j++];
for(int i=pocz; i<=kon; i++)
tablica[i]=temp[i];
return 0;
}
int main ()
{
int tab[rozmiar];
cout<<"Podaj rozmiar tablicy:\n";
cin >>rozmiar;
cout<<"Podaj przedzial:\n";
cin>>m;
srand(time(NULL));
for(int i=0; i<rozmiar; i++)
tab[i]=rand() % (m+1);
cout<<"Tablica przed sortowaniem\n";
for(int i=0; i<rozmiar; i++)
cout << tab[i] <<"\t";
cout << "\nWybierz rodzaj sortowania:\n\n";
cout << "1. Sortowanie przez wstawianie.\n";
cout << "2. Metoda merge sort.\n";
cout << "3. Sortowanie wybor.\n";
cout << "Wybieram: ";
cin>>nr_sort;
cout << "\n";
switch(nr_sort) {
case 1:
cout << "\nalgorytmem sortowania przez wstawianie:\n\n";
sort_wstaw(tab, rozmiar);
break;
case 2:
cout << "\nmerge sort:\n\n";
mergesort(tab, 0, rozmiar-1);
break;
case 3:
cout << "\nsortowaniem wybor:\n\n";
sort_wyb(tab, rozmiar);
break;
default:
break;
}
cout<<"Tablica posortowana:\n";
for(int i=0; i<rozmiar; i++)
cout << tab[i] <<"\t";
system("pause>>NULL");
return 0;
}