Я работаю над реализацией алгоритма быстрой сортировки на языке c. Когда я компилирую, он говорит об ошибке сегментации и не могу найти ее причину. Я посмотрел GeeksForGeeks о быстрой сортировке, и это моя попытка сделать это.
#include<stdio.h>
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
int partition(int arr[],int first,int last){
int pivot=arr[last];
int i=first-1;
for(int j=first;j<=last-1;j++){
if(arr[j]<=pivot){
i++;
swap(&arr[i],&arr[j]);
}
}
swap(&arr[i+1],&arr[last]);
return (i+1);
}
void quickSort(int arr[],int first,int last){
int pivot=partition(arr,first,last);
quickSort(arr,first,pivot-1);
quickSort(arr,pivot+1,last);
}
int main() {
int arr[]={1,8,3,9,4,5,7};
int size=sizeof(arr)/sizeof(arr[0]);
quickSort(arr,0,size-1);
for(int i=0;i<size;i++){
printf("%d ", arr[i]);
}
}
Я ожидал увидеть
1 3 4 5 7 8 9
но у меня ошибка сегментации.