深入淺出學演算法 排序專題 快速排序

2021-10-08 22:57:35 字數 857 閱讀 6354

之前給大家講過快排了,今天再講一遍……

排序大師今天在課上給徒弟們教快速排序o(n*log_n),總結分三步走

原序列以2為分隔數,第一趟排序結束,分為三組序列:① 1 ② 2 ③ 4

53 ;序列①發現元素個數為1,

結束;序列②元素個數為1,結束;序列③發現元素個數》

1,選擇3為分隔數,

分為三組序列:① 空 ② 3 ③ 5

4;序列①空,結束,序列②元素個數為1,

結束;序列③元素個數=

2>

1,選擇4為分隔數,分為三組序列:① 空 ② 4 ③ 5 排序完成

對於區間[l,r]選擇分隔數可以隨便選,可以選第乙個a[l],

也可以選最後乙個a[r],也可以選a[

(l+r)/2

],希望大家動手畫出樹形圖,加深理解

第一行輸入乙個整數n(1

<=n<=

100000

)第二行輸入n個整數ai(0

<=a[i]

<=10^

9)

從小到大輸出n個數,每相鄰兩個數之間有乙個空格
554

321

123

45

掌握快排的核心思想,一定畫一遍遞迴的過程樹
不理解快排的人可以看快速排序[雖然可以用冒泡 ]

#include

using

namespace std;

intmain()

深入淺出理解排序演算法之 氣泡排序

include void swap int a,int b 氣泡排序 基本思想 第一趟冒泡得到乙個關鍵字最小的記錄,第二趟得到次小值 針對每一趟 兩兩相鄰紀錄的關鍵字,如果反序則交換直到沒有反序為止 特點 時間效率,總共 n 1趟冒泡,對 j個記錄的表進行一趟冒泡需要 j 1次關鍵字比較,空間效率 ...

深入淺出理解排序演算法之 堆排序

include void swap int a,int b 維護最小堆 void adjustminheap int a,intpos,intlen else a pos temp 堆排序 基本思想 對於 n個元素的序列進行堆排序,先將其建成堆 最小堆 上一層的比本層小,一次遞推 以根結點與第 n個...

深入淺出學Hive Hive引數

第一部分 hive 引數 hive.exec.max.created.files 說明 所有hive執行的map與reduce任務可以產生的檔案的和 預設值 100000 hive.exec.dynamic.partition 說明 是否為自動分割槽 預設值 false hive.mapred.re...