Я пытаюсь заставить эту функцию быстрой сортировки работать, но возникает ошибка «завершено, ошибка сегментации». Могу я получить помощь? Функция перестала работать, когда я объединил циклы while с помощью оператора &&.
#include <stdio.h>
void swap(int a[], int b, int c){
int temp=a[b];
a[b]=a[c];
a[c]=temp;
}
void quicksort_fixed(int *number,int first,int last){
int pivot=last;
int smaller_index=first;
int loop_variable=last;
if(first<last){
while((number[smaller_index] <= number[pivot])&&(smaller_index < loop_variable)){
//printf("smaller index (%d) is less than pivot",smaller_index);
smaller_index++;
}
while((number[loop_variable] > number[pivot])&&(smaller_index < loop_variable)){
//printf("loop variable (%d) is greater than pivot",loop_variable);
loop_variable--;
}
if(smaller_index < loop_variable){
swap(number,smaller_index,loop_variable);
}
}
swap(number,last,loop_variable);
quicksort_fixed(number,first,loop_variable-1);
quicksort_fixed(number,loop_variable+1,last);
}
void test_quicksort_fixed(){
printf("\nUnsorted List 1: "); // First Test with small consecutive numbers
int a[6] = {5,2,3,1,4,6};
for (int i=0; i < 6; i++){
printf("%d, ", a[i]);
}
printf("\nSorted List 1: ");
quicksort_fixed(a,0,5);
for (int i=0; i < 6; i++){
printf("%d, ", a[i]);
}