只有heapSort函数在程序中停止

时间:2019-05-03 15:54:21

标签: c

我的程序中有一些排序功能,堆仅排序不起作用。整个程序可以工作,但是在堆排序之前,它正在等待,然后停止。我在做什么错了?

 //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;
    }    

0 个答案:

没有答案