快速排序、插入排序和選擇排序

字號:

快速排序是目前使用較好的排序算法,它是由C.A.Hoare發(fā)明并命名的??焖倥判蚧舅惴ㄋ枷耄和ㄟ^一次分割,將無序序列分成兩部分,其中前一部分的元素值均不大于后一部分的元素值。然后對每一部分利用同樣的方法進行分割,這個過程一直做到每一個子序列的長度小于某個值m為止。
    對序列p的分割過程: 首先,在序列的第一個、中間一個及最后一個元素中選取中項,得p(k),然后設置兩個指針i和j分別指向序列的起始和最后的位置.
    Status Quick_Sort(ElemType A[],int left,int right){
    tmp=A[(left+right)/2];
    do{
    while(A[i]    while(A[j]>tmp&&j>left) j--;
    if(i<=j){
    swap(A[i],A[j]);
    i++;
    j--;
    }
    }while(i<=j);
    if(left    if(i    return 1;
    }
    ============================================