練車加端盤子也擋不住我學習系列 歸併排序演算法

2021-10-08 06:26:41 字數 1326 閱讀 2691

歸併排序,是建立在歸併操作上的一種有效的排序演算法,效率為o(nlogn)。2023年由約翰·馮·諾伊曼首次提出。該演算法是採用分治法(divide and conquer)的乙個非常典型的應用,且各層分治遞迴可以同時進行。速度僅次於快速排序,為穩定排序演算法,一般用於對總體無序,但是各子項相對有序的數列,歸併排序的比較次數小於快速排序的比較次數,移動次數一般多於快速排序的移動次數。你懂了嗎?哈哈哈(手動滑稽~)

我給你乙個無序的陣列,讓你給我排序成從小到大的陣列!你怎麼排?

選擇排序法?

時間複雜度為o(n^2),咱說,多少有點low啊,哈哈哈哈嗝。

從早上10點練完車開始思考這個問題,中午端盤子,下午練車也在思考,現在才勉強能理解,但理解的還很不到位。這個演算法對新手真的是不太友好。需要慢慢去捂,怎麼實現的呢,看下面這個圖!

歸併排序原來就是將一堆數字分開,再合成有序的數列。

其實,這就是分治的思想,將大問題化小問題,將每個最小的問題處理好,合併起來大問題也就處理ok了。

#define max 100

void

merge

(int a,

int l1,

int r1,

int l2,

int r2)

//合併序列

while

(i<=r1) temp[counts++

]=a[i++];

while

(j<=r2) temp[counts++

]=a[j++];

for(

int i=

0;i) a[l1+i]

=temp[i];}

void

mergesort

(int a,

int left,

int right)

}

不懂就慢慢悟吧,俺也一樣。

練車加端盤子也擋不住我學習系列 隨機選擇演算法

廢話不多說,直接步入正題!如何從乙個無序的陣列中求出第k大的數?常規思想 直接選擇排序從小到大,然後直接找出第k個數即可。時間複雜度為o n 2 總的來說,這不是乙個很好的演算法!隨機選擇演算法的原理類似於隨機快速排序演算法。當對a left,right 執行一次randpartition函式之後,...

練車 科目二

大一暑假,還是決定先報名把駕照拿下,由於回家鄉考駕照各種不方便,爸媽又疼我,讓我在這邊考駕照。於是報了半年拿證的5000駕校,德安駕校。報名要居住證,辦理又花了個把月,報完名稀里糊塗就開始準備科目一,體檢什麼的都包辦了,乙個暑假幾乎都在家宅著過了,花了幾天時間刷科目一題目,臨開學又練了3天車,開學當...

演算法小練 加一

title 演算法小練 加一 date 2019 11 09 19 43 59 categories 給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2...