當前位置:編程學習大全網 - 腳本源碼 - 排序方法都有哪幾種,比如1、2、3。。。。。。甲乙丙丁等

排序方法都有哪幾種,比如1、2、3。。。。。。甲乙丙丁等

排序方法壹般都就那幾種。像冒泡排序,直接插入排序,快速排序,簡單選擇排序,希爾排序,堆排序。其排序介紹自己看吧。

1、冒泡排序屬於穩定排序,是壹種借助“交換”進行排序的方法。首先要將第壹個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則將兩個記錄交換之,然後比較第二個記錄與第三個記錄的關鍵字,以此類推,直至第n-1個記錄與第n個記錄的關鍵字進行比較為止,這壹過程稱為第壹趟冒泡排序,其結果使得關鍵字最大的記錄被安置在最後壹個記錄的位置上;然後進行第二趟冒泡排序,對前N-1個記錄進行同樣操作;以此類推,直到在壹趟排序過程中沒有進行過交換記錄的操作為止。

2、直接插入排序屬於穩定的排序,每次從無序表中取出第壹個元素,把它插入到有序表的合適位置,使有序表仍然有序。第壹趟將待比較的數值與它的前壹個數值進行比較,當前壹數值比待比較數值大的情況下繼續循環比較,依次進行下去,進行了(n-1)趟掃描以後就完成了整個排序過程,結束該次循環。

3、快速排序屬於不穩定排序,是對起泡排序的壹種改進。它的基本思想是,通過壹趟排序將待排記錄分割成獨立的兩部分,其中壹部分記錄的關鍵字均比另壹部分記錄的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。假設待排序的序列為{R.[s],R.[s+1],…….,R.[t]},首先任意選取壹個記錄,然後按下述原則從新排序記錄:將關鍵字較他小的記錄都安置在他的位置之前,將所有關鍵字較他大的記錄都安置在他的位置後面。由此可以該“樞軸”記錄最後所落的位置i作為分界線,將序列{R[s],R[s+1]…….R[t]}分割成兩個子序列{R[s],R[s+1]…..R[i-1]}和{R[i+1]……R[t]},這個過程稱作壹趟快速排序。壹趟快速排序的具體做法是:附設兩個指針low和high,它們的初值分別指向數組第壹個數據和最後壹個數據,將樞軸記錄暫存在R[0]的位置上排序過程中只作R[low]或R[high]的單向移動,直至壹趟排序結束後再將樞軸記錄移至正確位置上。

4、簡單選擇排序屬於不穩定排序,基本思想是,每壹趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。第i趟簡單選擇排序是指通過n-i次關鍵字的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i個記錄進行交換。***需進行n-1趟比較,直到所有記錄排序完成為止。例如:進行第i趟選擇時,從當前候選記錄中選出關鍵字最小的k號記錄,並和第i個記錄進行交換。

5、希爾排序屬於不穩定排序,也是壹種屬插入排序類,它的基本思想是:先將整個待排記錄序列分割稱為若幹個子序列分別進行直接插入排序,待整個序列中記錄“基本有序”時,再對全體記錄進行壹次直接插入排序。希爾排序的壹個特點是:子序列的構成不是簡單的“逐段分割”,而是將相隔某個“增量”的記錄組成壹個子序列。

6、堆排序屬於不穩定排序,它的基本思想是,先將初始文件R[1..n]建成壹個大根堆,此堆為初始的無序區,再將關鍵字最大的記錄R[1](即堆頂)和無序區的最後壹個記錄R[n]交換,由此得到新的無序區R[1..n-1]和有序區R[n],且滿足R[1..n-1].keys≤R[n].key;由於交換後新的根R[1]可能違反堆性質,故應將當前無序區R[1..n-1]調整為堆,然後再次將R[1..n-1]中關鍵字最大的記錄R[1]和該區間的最後壹個記錄R[n-1]交換,由此得到新的無序區R[1..n-2]和有序區R[n-1..n],且仍滿足關系R[1..n- 2].keys≤R[n-1..n].keys,同樣要將R[1..n-2]調整為堆。直到無序區只有壹個元素為止

  • 上一篇:什麽是電容麥
  • 下一篇:gogogogo跑跑跑把所有煩惱全忘掉是什麽歌
  • copyright 2024編程學習大全網