排序是我曾經的朋友

2021-06-19 13:03:14 字數 2120 閱讀 2152

多少年前,我就與你在一起,曾經把你儲存我電腦裡,

多少年後,積攢的東西太多,以至於找不到你了,

不知道,是你已經離開了我,還是我拋棄了你,

這次我把你放在這裡,願永遠伴我左右.....

說到排序,相信每乙個程式設計師沒有不知道的,就像走路吃飯一樣平常,當你多年來,一直沒有使用了,還能一次性code出來,

如果不能在心裡走一圈,非要debug的話,那她正在遠離你.....

我把排序歸為兩種,小資料列與大資料列。

小資料列,我分為氣泡排序、插入排序、選擇排序和希爾排序等,

大資料列, 我分為快速排序、歸併排序等

一、 小資料列

1、 氣泡排序:

基本原理:

1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3.針對所有的元素重複以上的步驟,除了最後乙個。

4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較

原始碼:

時間複雜度: o(n²)

2、插入排序

基本原理:

1.從第乙個元素開始,該元素可以認為已經被排序

2.取出下乙個元素,在已經排序的元素序列中從後向前掃瞄

3.如果該元素(已排序)大於新元素,將該元素移到下一位置

4.重複步驟3,直到找到已排序的元素小於或者等於新元素的位置

5.將新元素插入到該位置後

6.重複步驟2~5

原始碼:

時間複雜度:o(n)~o(n²)

3、選擇排序

基本原理:

首先在未排序序列中找到最小(大)元素,

存放到排序序列的起始位置,

然後,再從剩餘未排序元素中繼續尋找最小(大)元素,

然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢

原始碼:

時間複雜度:o(n²)

4、希爾排序

基本原理:

先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。

所有距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;

然後,取第二個增量d2即所有記錄放在同一組中進行直接插入排序為止

原始碼:

時間複雜度:o(nlog2^n)~o(n^1.5)

二、大資料列

1、快速排序

基本原理:

1.從數列中挑出乙個元素,稱為 "基準"(pivot)。

2.重新排序數列,所有元素比基準值小的擺放在基準前面,

所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。

在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作。

3.遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

原始碼:

時間複雜度:o(nlogn)~o(n²)

2、歸併排序

基本原理:

1.申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列

2.設定兩個指標,最初位置分別為兩個已經排序序列的起始位置

3.比較兩個指標所指向的元素,選擇相對小的元素放入到合併空間,並移動指標到下一位置

4.重複步驟3直到某一指標達到序列尾

5.將另一串行剩下的所有元素直接複製到合併序列尾

原始碼:

時間複雜度:(n log n)/2 ~ nlog n - n + 1

如果我是你的女朋友

如果我是你的女朋友 如果我是你的女朋友,我會每天都跟你說我喜歡你,不為什麼就親親你 如果我是你的女朋友,我會做希奇古怪的東西,逼你當著我的面嘗一小口,就一小口 如果我是你的女朋友,我會要你拉著我的手過馬路,絕對不會看來往的車輛 如果我是你的女朋友,我會要你和我一起像小孩子一樣,手牽著手晃來晃去,不時...

如果我是你的女朋友

如果我是你的女朋友,我會只在你面前很笨,讓你驚喜地發現,原來在大家眼裡冰雪聰明的我,也會犯只有你知道的弱智錯誤。如果我是你女朋友,我會在吵架之後就買酒,然後乙個人坐在很高的地方看著遠方哭,如果是我錯了,你氣得要罵我,多貴的長途我都回答給你,然後靜靜的乖乖的聽你捨不得在教訓我的嘆氣聲,我則紅著臉咬著嘴...

我的男朋友是鋼鐵直男

我的男友是鋼鐵直男 是誰說過乙個鋼鐵直男也可以因為愛情,漸漸地變成乙個小奶狗的,如果這是真的,那我覺得我男朋友可能已經到了無可救藥的地步了。有的時候我也在懷疑,他是怎麼有的物件的呢?在戀愛中最折磨人的一件事,不是你愛上了乙個渣男,而是你喜歡上了乙個直男。如果你還想和直男好好談戀愛的話,那你絕對不能對...