作業內容
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 ...