我的程序中有一些排序功能,堆仅排序不起作用。整个程序可以工作,但是在堆排序之前,它正在等待,然后停止。我在做什么错了?
//main
int *sortedArrHeap = heapSort(Array,number);
puts("");
printf("Sorted array by Heap Sort for random elements:");
printArr(sortedArrHeap,number);
//functions
void heapIf(int*arr,int sizeArr,int i){
int root = i;
int left = 2*i + 1;
int right = 2*i + 2;
if(left<sizeArr && arr[left]>arr[root]){
root = left;
}
if(right<sizeArr && arr[right]>arr[root]){
root = right;
}
if(root!=i){
swapElements(arr[i],arr[root]);
heapIf(arr,sizeArr,root);
}
}
int* heapSort(int*arr,int sizeArr){
for(int i=sizeArr/2-1;i>=0;i--){
heapIf(arr,sizeArr,i);
for(int i=sizeArr-1;i>0;i--){
swapElements(arr[0],arr[i]);
heapIf(arr,i,0);
}
}
return arr;
}