I implemented quuicksort for practice and have a subtle bug
Hello,
I have run my program with GDB and when I enter
Code:
my_quicksort(array)
in I have high set to -7575 consistently and low set to 0. I do not understand how this can happen, I have run it 3 times now and it is always -7575. It should be 8 right?
Code:
#include <stdio.h>
void swap(int arr[], int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
void qs(int arr[], int low, int high){
int mid = (low + high)/2;
swap(arr, mid, high);
int k = high - 1;
for (int i = low; i < high-1; i++){
if (arr[i] > arr[high])
swap(arr,i,k--);
}
swap(arr, k, high);
qs(arr, low, k-1);
qs(arr, k+1, high);
}
void my_quicksort(int arr[]){
int low = 0;
int high = 8;
int mid = (high + low)/2;
swap(arr, mid, high);
int k = high - 1;
for (int i = 0; i < high - 1; i++){
if (arr[i] > arr[high])
swap(arr, i, k--);
}
swap(arr, k, high);
qs(arr, low, k - 1);
qs(arr, k + 1, high);
}
void print_array(int arr[]){
for (int i = 0; i < 9; i++){
printf("%d,%d\t", i, arr[i]);
}
}
int main(){
int array[9] = {3,7,5,0,3,5,2,8,1};
my_quicksort(array);
print_array(array);
return 0;
}