排序算法之快速排序

算法思想

通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小段只,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序惜浅,整個排序過程可以遞歸進(jìn)行脉让,以此達(dá)到整個數(shù)據(jù)變成有序序列。

算法步驟

  1. 設(shè)置兩個變量i跷睦、j筷弦,排序開始的時候:i=0,j=N-1;

  2. 以第一個數(shù)組元素作為關(guān)鍵數(shù)據(jù)烂琴,賦值給key爹殊,即key=A[0];

  3. 從j開始向前搜索奸绷,即由后開始向前搜索(j--)梗夸,找到第一個小于key的值A(chǔ)[j],將A[j]和A[i]互換号醉;

  4. 從i開始向后搜索反症,即由前開始向后搜索(i++),找到第一個大于key的A[i]畔派,將A[i]和A[j]互換铅碍;

  5. 重復(fù)第3、4步线椰,直到i=j胞谈; (3,4步中,沒找到符合條件的值憨愉,即3中A[j]不小于key,4中A[i]不大于key的時候改變j烦绳、i的值,使得j=j-1配紫,i=i+1径密,直至找到為止。找到符合條件的值躺孝,進(jìn)行交換的時候i享扔, j指針位置不變。另外括细,i==j這一過程一定正好是i+或j-完成的時候伪很,此時令循環(huán)結(jié)束)戚啥。

一趟排序的過程
排序的全過程

算法復(fù)雜度

  • 快速排序的平均時間復(fù)雜度為:O(nlogn)
  • 快速排序最差的情況下時間復(fù)雜度為:O( n^2 )

算法實現(xiàn)(JAVA)

public void quickSort(int[] arr,int low,int high){
        if(low < high){
            int loc = partition(arr,low,high);
            quickSort(arr,low,loc - 1);
            quickSort(arr,loc + 1,high);
        }
    }

private int partition(int[] arr,int low,int high){
        int standard = arr[low];
        while(low < high){
            //從后向前
            while(low < high && arr[high] >= standard)--high;
            arr[low] = arr[high];
            //從前向后
            while(low < high && arr[low] <= standard)++low;
            arr[high] = arr[low];
        }
        arr[high] = standard;

        return low;
    }

參考文章

  1. 八大排序算法
  2. 快速排序-百度百科
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奋单,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猫十,更是在濱河造成了極大的恐慌览濒,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拖云,死亡現(xiàn)場離奇詭異贷笛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宙项,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門乏苦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事汇荐《淳停” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵掀淘,是天一觀的道長旬蟋。 經(jīng)常有香客問我,道長革娄,這世上最難降的妖魔是什么倾贰? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮拦惋,結(jié)果婚禮上匆浙,老公的妹妹穿的比我還像新娘。我一直安慰自己厕妖,他們只是感情好吞彤,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叹放,像睡著了一般饰恕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上井仰,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天埋嵌,我揣著相機(jī)與錄音,去河邊找鬼俱恶。 笑死雹嗦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的合是。 我是一名探鬼主播了罪,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼聪全!你這毒婦竟也來了泊藕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤难礼,失蹤者是張志新(化名)和其女友劉穎娃圆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛾茉,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡讼呢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谦炬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悦屏。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出础爬,到底是詐尸還是另有隱情散劫,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布幕帆,位于F島的核電站获搏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏失乾。R本人自食惡果不足惜常熙,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碱茁。 院中可真熱鬧裸卫,春花似錦、人聲如沸纽竣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜓氨。三九已至聋袋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穴吹,已是汗流浹背幽勒。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留港令,地道東北人啥容。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像顷霹,于是被迫代替她去往敵國和親咪惠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 概述 排序有內(nèi)部排序和外部排序淋淀,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序遥昧,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,170評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序绅喉,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序渠鸽,而外部排序是因排序的數(shù)據(jù)很大叫乌,一次不能容納全部...
    每天刷兩次牙閱讀 3,729評論 0 15
  • 采用分治的思想柴罐,首先選取一個基準(zhǔn)值pivot,然后將小于基準(zhǔn)值的數(shù)放到左邊憨奸,大于基準(zhǔn)值的數(shù)放到右邊革屠。而對于左邊的部...
    哇哇哇one閱讀 435評論 0 1
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,245評論 0 2
  • 感恩昨天一天覺察到自己的低效,最要做的事情排在后面,結(jié)果到睡了還沒時間做似芝。以后事情想起來要及時做那婉,對峙拖延。 感恩...
    寸心潔白閱讀 98評論 0 2