这个快速排序代码有什么问题

时间:2015-11-19 10:44:13

标签: c sorting quicksort

这个快速排序代码有什么问题我输入错误的输出结果:

#include<stdio.h>

void quick_sort(int A[], int start, int end) {
    int pIndex;

    if (start < end) {
        pIndex=partion(A,start,end);
        quick_sort(A,start,pIndex-1);
        quick_sort(A,pIndex+1,end);
    }

}

int partion(int A[], int start, int end) {
    int i, temp, pIndex = start;
    int pivot = A[end];

    for (i = start; i < end; i++) {
        if (A[i] <= pivot) {
            temp = A[i];
            A[i] = A[pIndex];
            A[pIndex] = A[i];
            pIndex++;
        }
    }

    temp = A[pIndex];
    A[pIndex] = A[end];
    A[end] = temp;
    return pIndex;
}

int main() {
    int A[100], size, i;

    scanf("%d\n", &size);

    for (i = 0; i < size; i++) {
        scanf("%d", &A[i]);
    }

    quick_sort(A, 0, size-1);

    for (i = 0; i < size; i++) {
        printf("%d\t", A[i]);
    }

    return 0;
}

我输出错误输出: Output

我该怎么做才能按升序排序

1 个答案:

答案 0 :(得分:5)

你的意思是A[pIndex]=A[i];还是应该A[pIndex]=temp; - 这应该是一次交换操作。