Witam.
Stworzyłam tablicę i zaimplementowałam 3 różne sposoby sortowania, jednak w momencie gdy chce wywołać funkcję sortującą wyskakuje błąd. Czy ktoś z Was wie jaki może być powód?
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
using namespace std;
void tworz_tab()
{
int rozmiar;
cout<<"Podaj rozmiar"<<endl;
cout<<endl;
cin>>rozmiar;
int *tablica=new int [rozmiar];
for (int i=0; i<rozmiar; i++)
{
tablica[i]=rand() % 10;
cout<<tablica[i]<<" ";
}
}
/*void wypelnij_tablice(int *tablica)
{
for (int i = 0; i < wielkosc_tablicy; i++)
{
tablica[i] = rand() % 9 + 1;
}
}*/
void sortowanie_przez_wstawianie(int *tablica, int rozmiar)
{
int i;
int x;
for (int j = rozmiar - 2; j >= 0; j--)
{
x = tablica[j];
for (i = j + 1; (i < rozmiar) && (x > tablica[i]);i++)
{
tablica[i - 1] = tablica[i];
}
tablica[i - 1] = x;
}
}
void sortowanie_babelkowe(int rozmiar, int *tablica)
{
for (int i = 1; i < rozmiar - 1; i++)
{
int spr = 1;
for (int j = 0; j < rozmiar - 1; j++)
{
if (tablica[j] > tablica[j + 1])
{
swap(tablica[j], tablica[j + 1]);
spr = 0;
}
}
if (spr == 1) return;
}
}
void quick_sort(int *tablica, int lewy, int prawy)
{
int i,j,piwot;
i = (lewy + prawy) / 2;
piwot = tablica[i];
tablica[i] = tablica[prawy];
for(j = i = lewy; i < prawy; i++)
if(tablica[i] < piwot)
{
swap(tablica[i], tablica[j]);
j++;
}
tablica[prawy] = tablica[j];
tablica[j] = piwot;
if(lewy < j - 1)
quick_sort(tablica, lewy, j - 1);
if(j + 1 < prawy)
quick_sort(tablica, j + 1, prawy);
}
int main()
{
tworz_tab();
cout<<endl;
cout<<"Tablica po sortowaniu:"<<endl;
cout<<endl;
quick_sort(tablica, 0, rozmiar-1);
//sortowanie_babelkowe(rozmiar, tablica);
//sortowanie_przez_wstawianie(tablica, rozmiar)
return 0;
}