1
我想在C中實現遞歸快速排序,通過使用按位異或操作進行所有交換。這裏是我有這麼遠:遞歸奇怪的輸出QuickSort
//bitwise recursive quicksort
void quicksort(int *int_array,int p, int r){
if(p<r){
int q = part(int_array, p, r);
quicksort(int_array,p, q-1);
quicksort(int_array, q+1, r);
}
}
//Partition
int part(int *int_array, int p, int r){
int pivot = int_array[r];
int i = p-1;
int j;
for(j = p; j<=r-1; j++){
if(int_array[j] <= pivot){
i++;
int_array[i] = int_array[i]^int_array[j];
int_array[j] = int_array[i]^int_array[j];
int_array[i] = int_array[i]^int_array[j];
}
}
int_array[i+1] = int_array[i+1]^int_array[r];
int_array[r] = int_array[i+1]^int_array[r];
int_array[i+1] = int_array[i+1]^int_array[r];
return i+1;
}
當我運行的20個整數,19個其中20陣列上的代碼獲得變爲0的任何想法,爲什麼?我無法看到XOR交換的任何錯誤。任何幫助表示感謝,謝謝!