快速排序

快速排序是冒泡排序(http://blog.csdn.net/chfe007/article/details/44133349)的改進算法,本文選擇第一個元素作爲軸值,從小到達排序。

快速排序算法的一趟排序如下:

int Partion (int data[], int first, int end) {
    int i = first, j = end;
    int privot = data[i];
    while (i < j) {
        while (i < j && data[j] > privot) --j;
        data[i] = data[j];
        while (i < j && data[i] < privot) ++i;
        data[j] = data[i];
    }
    data[i] = privot;
    return i;
}

完成快速排序算法的功能函數如下:

void QSort (int data[], int start, int end) {
    while (start < end) {
        int mid = Partion(data, start, end);
        QSort (data, start, mid - 1);
        QSort (data, mid + 1, end);
    }
}

調用快速算法就很簡單了:

void QuickSort (int data[], int n) {
    QSort(data, 1, n);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章