Assignment makes pointer without a cast

前端 未结 2 1134
星月不相逢
星月不相逢 2021-01-26 11:31

I am editing a quick sort code so that the values of low, high, and middle point to an array element instead of integers.

This is my code:

#include 

        
2条回答
  •  旧巷少年郎
    2021-01-26 12:11

    Change 'split()' to return an 'int *' instead of 'int'.

    Change the last line of the 'split()' function from:

    return *high;
    

    to

    return high;
    

    Perhaps this would work better:

    #include 
    
    #define N 10
    
    void quicksort(int a[], int *low, int *high);
    int *split(int a[], int *low, int *high);
    
    int main(void)
    {
        int a[N], i;
        printf("Enter %d numbers to be sorted: ", N);
        for (i=0; i= high) return;
        middle = split(a, low, high);
        quicksort(a, low, middle - 1);
        quicksort(a, middle + 1, high);
    }
    
    int *split(int a[], int *low, int *high)
    {
        int part_element = *low;
    
        for (;;) {
            while (low < high && part_element <= *high)
                high--;
            if (low >= high) break;
            *low++ = *high;
    
            while (low < high && *low <= part_element)
                low++;
            if (low >= high) break;
            *high-- = *low;
        }
    
        *high = part_element;
        return high;
    }
    

提交回复
热议问题