C語言幾種排序方法介紹

2021-03-04 09:56:13 字數 2008 閱讀 5015

作業內容

1、寫乙個函式實現插入排序;

2、輸入乙個一維陣列資料,首先進行選擇排序,然後進行二分查詢。

以上兩題任選一題完成,其中,插入排序、選擇排序、二分查詢的演算法思路如下。

1、插入排序

1.1 演算法思路

插入排序演算法(insertion sort)首先將待排序的陣列(共n個元素)分成兩部分:第一部分有序,包含陣列首元素;第二部分無序,包含其餘n-1個元素。排序過程分趟進行,每趟都在無序序列中取出第乙個元素,通過比較,找到其在有序序列中的位置,從而將其插入有序序列。

1.2 演算法步驟

①從有序數列和無序數列開始進行排序;

②處理第i個元素時(i=2,3,…,n) , 數列是已有序的,而數列是無序的。用ai與ai-1,a i-2,…,a1進行比較,找出合適的位置將ai插入;

③重複第二步,共進行n-1趟插入處理,數列全部有序。

1.3 演算法示例

2、選擇排序

2.1 演算法思路

每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在已排好序的數列的開頭(或最後),直到全部待排序的資料元素排完。

2.2 演算法步驟

n個記錄的檔案的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:

①初始狀態:無序區為r[1..n],有序區為空。

②第1趟排序

在無序區r[1..n]中選出最小資料r[k],將它與無序區的第1個資料r[1]交換,使r[1..1]和r[2..

n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。

……③第i趟排序

第i趟排序開始時,當前有序區和無序區分別為r[1..i-1]和r[i..n](1≤i≤n-1)。

該趟排序從當前無序區中選出最小資料r[k],將它與無序區的第1個資料r[i]交換,使r[1..i]和r[i+1..n]分別變為資料個數增加1個的新有序區和資料個數減少1個的新無序區。

這樣,n個資料的待排序數列的選擇排序可經過n-1趟選擇排序得到有序結果。

2.3 演算法示例

初始資料49 38 65 97 76 13 27 49]

第一趟排序後 13 [38 65 97 76 49 27 49]

第二趟排序後 13 27 [65 97 76 49 38 49]

第三趟排序後 13 27 38 [97 76 49 65 49]

第四趟排序後 13 27 38 49 [76 97 65 49 ]

第五趟排序後 13 27 38 49 49 [97 65 76]

第六趟排序後 13 27 38 49 49 65 [97 76]

第七趟排序後 13 27 38 49 49 65 76 [97]

最後排序結果 13 27 38 49 49 65 76 97

3、二分查詢(binary search)

3.1 演算法思路

二分查詢又稱折半查詢,它是一種效率較高的查詢方法。

二分查詢要求:待查詢序列是有序的,若無序則先排序。

對於有序表,查詢時先取待查詢序列中間位置的資料(當前資料)和待查詢資料進行比較,若相等,則查詢成功,返回其序號;如果當前資料比待查詢資料大,則在後半部分繼續進行折半查詢;否則在前半部分繼續進行折半查詢;若直到查詢範圍為空都查不到,則查詢失敗,返回-1。

3.2 演算法步驟

⑴設r[1..n]是當前的查詢序列,設low=1,high=n;

⑵確定該區間的中點位置:

mid=(low+high)/2

然後將待查詢的k值與r[mid]比較:若相等,則查詢成功並返回此位置,否則須確定新的查詢區間,繼續二分查詢,具體方法如下:

①若r[mid]>k,則由表的有序性可知r[mid..n]均大於k,因此若表中存在關鍵字等於k的結點,則該結點必定是在位置mid左邊的子表r[1..mid-1]中,故新的查詢區間是左子表r[1..

mid-1]。

②類似地,若r[mid]⑶重複步驟⑵,直至查詢成功,或者直至當前的查詢區間為空(即查詢失敗)時為止。

幾種常用c語言的排序方法

氣泡排序 基本概念 氣泡排序 bubblesort 的基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最...

c語言中排序的實現方法有好幾種

c語言中排序的實現方法有好幾種.可以到百渡上去搜,會有不少答案的.給你提供幾個.希望對你有幫助.這是冒泡法的程式 include voidsort intarray,intsize voidmain sort a,10 for i 0 i 10 i printf 6d a i 這是選擇法的程式 in...

幾種安全評價方法介紹

借鑑日本勞動省安全評價六階段法的定量評價表,結合我國gb50160 1992 1999年版 hg20660 2000等有關規範 標準對其內容做了部分修改,編制了 危險度評價取值表 見表f1.2 1 規定單元危險度由物質 容量 溫度 壓力和操作五個專案共同確定,其危險度分別按a 10分 b 5分 c ...