快速排序quickSort 算法實現

廢話少說,直接show code.

#include<iostream>
using namespace std;
//快速排序partation
int partSort(int *array, int left, int right)        //(左右下標)
{
    int &key = array[right];                         //以最後一個元素爲基準
    while(left < right){
        while(left < right && array[left] <= key){
            left++;
        }
        while(left < right && array[right] >= key){
            right--;
        }
        int temp = array[left];
        array[left] = array[right];
        array[right] = temp;
    }
    int tmp = array[left];
    array[left] = key;
    key = tmp;
    return left;
}

void quickSort(int *array, int low, int high){
    int mid;
    if(low >= high) return;
    mid = partSort(array, low, high);
    quickSort(array, low, mid-1);
    quickSort(array, mid+1, high);
}

int main(){
    int input[10]={9,2,1,5,3,8,7,0,6,4};
    quickSort(input, 0, 9);//下標

    for(int i=0; i<length; i++){
        printf("%d ",input[i]);
    }
    printf("\n");
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章