Witajcie moi drodzy! Drugi raz przychodzę do was z problemem dotyczącym sortowania...ten quick sort działa doskonale przy wartościach losowych, ale kiedy próbuję wygenerować tablicę stałą - albo przestaje działać, albo wyświetla jakiś kosmiczny czas :( Probowałem odpalić pod debuggerem, ale program jest przepuszczany i tyle :| Macie jakiś pomysł, co może być przyczyną?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void quick_sort(int tab[],int p, int n) {
int b=p;
int pivot = (n+p)/2;
int pomocnicza_zmienna;
pomocnicza_zmienna = tab[pivot];
tab[pivot] = tab[n];
tab[n] = pomocnicza_zmienna;
pivot = n;
int a;
for (a=p;a<=n-1;a++) {
if (tab[a] < tab[pivot]) {
pomocnicza_zmienna = tab[a];
tab[a] = tab[b];
tab[b] = pomocnicza_zmienna;
b++;
}
}
pomocnicza_zmienna = tab[pivot];
tab[pivot] = tab[b];
tab[b] = pomocnicza_zmienna;
pivot = b;
if (p<pivot) {
quick_sort(tab,p,pivot);
}
if (pivot+1<n) {
quick_sort(tab,pivot+1,n);
}
}
int main() {
int n;
double t;
printf("wpisz liczbę elementów tablicy:");
scanf("%d",&n);
int *tab = (int *)malloc(n * sizeof(int));
int i = 0;
while (i < n) {
tab[i] = 1;
//printf("%d ", tab[i]);
i = i + 1;
}
printf("\n");
t = clock();
quick_sort(tab,0,n-1);
t = clock() - t;
t = t/CLOCKS_PER_SEC;
printf("czas to %f\n",t);
for(int i =0; i<n;i++){
//printf("%d ", tab[i]);
}
free(tab);
return 0;
}