算法解析之快速排序

快速排序

算法思路:
1、找到一個(gè)關(guān)鍵值(一般是第一個(gè)或者中值),將小于關(guān)鍵值的序列放在左邊,大于關(guān)鍵值的序列放在右邊
2、將左右兩個(gè)序列分別使用1過程(遞推過程)
3、最終各個(gè)序列退化至單個(gè)元素,遞歸開始回歸,整個(gè)序列有序

C++

//核心代碼
template <typename T>
//給關(guān)鍵值找到合適的位置,并返回所在的位置
int partition(T arr[],int low,int high){
    //選取第一個(gè)值作為關(guān)鍵值(中軸值)
    int keyValue = arr[low];
    //j為最終的中軸索引值
    int j = low;
    for (int i = low + 1; i <= high; i++) {
        if(arr[i] < keyValue){
            swap(&arr[++j], &arr[i]);
        }
    }
    swap(&arr[low], &arr[j]);
    return j;
}

template <typename T>
void quickSort(T arr[],int low,int high){
    //回歸條件
    if (high>low) {
        //1步驟
        int q = partition(arr, low,high);
        //2步驟
        quickSort(arr, low, q-1);
        quickSort(arr, q+1, high);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,301評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,825評論 0 15
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 1 序 2016年6月25日夜,帝都,天下著大雨,拖著行李箱和同學(xué)在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,376評論 0 12
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個(gè)記錄插入到已排序好...
    依依玖玥閱讀 1,349評論 0 2

友情鏈接更多精彩內(nèi)容