提供操作:選擇排序、氣泡排序、插入排序、基數排序
1)穩定的:如果存在多個具有相同排序碼的記錄,經過排序後,這些記錄的相對次序仍然保持不變,則這種排序演算法稱為穩定的。
插入排序、氣泡排序、歸併排序、分配排序(桶式、基數)都是穩定的排序演算法。
2)不穩定的:否則稱為不穩定的。
直接選擇排序、堆排序、shell排序、快速排序都是不穩定的排序演算法。
資料結構自考網
演示各種排序方法的英文**
【選擇排序】
排序(selection sort)的基本思想是:每一趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子檔案的最後,直到全部記錄排序完畢。
用的選擇排序方法有直接選擇排序和堆排序。
它是乙個基本的排序演算法,最壞情況下的時間複雜度為o(n2),當資料是近排序(因為它是自適應)或問題規模較小時(因為它有低開銷)插入排序演算法是首選。出於這些原因,因為它也是穩定的,插入排序往往是作為遞迴的基本情況(問題規模較小時)更高的開銷分而治之,如合併排序和快速排序的排序演算法。
直接選擇排序(straight selection sort)
1、直接選擇排序的基本思想
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、直接選擇排序的過程
對初始關鍵字為49、38、65、97、76、13、27和49的檔案進行直接選擇排序的過程【參見動畫演示】
3、演算法描述
直接選擇排序的具體演算法如下:
void selectsort(seqlist r)
//endif
} //endfor
} //seleetsort
4、演算法分析
(1)關鍵字比較次數
無**件初始狀態如何,在第i趟排序中選出最小關鍵字的記錄,需做n-i次比較,因此,總的比較次數為:
n(n-1)/2=0(n2)
(2)記錄的移動次數
當初始檔案為正序時,移動次數為0
檔案初態為反序時,每趟排序均要執行交換操作,總的移動次數取最大值3(n-1)。
直接選擇排序的平均時間複雜度為o(n2)。
(3)直接選擇排序是乙個就地排序
(4)穩定性分析
直接選擇排序是不穩定的
【例】反例[2,2,1]
測試#include
using namespace std;
int main()}}
cout<<"the sorted numbers:" 資料結構實驗報告六 排序實踐 我是qq 資料結構與演算法課程實驗報告 實驗六 排序實踐 姓名 班級 學號 實驗六排序實踐 一 實驗內容 實現各排序演算法,必須實現起泡排序 希爾排序和簡單選擇排序,其他排序演算法選做,並分析各演算法的效能。二 實驗目的 掌握各排序演算法的實現方法,並分析各排序演算法的... 1 實驗要求 2 實驗過程 3 實驗成果截圖 1 實驗要求 2 實驗過程 3 實驗成果截圖1 實驗要求 2 實驗過程 1 插值查詢 public static comparable insertionsearch int num,int key return 1 2 斐波那契查詢private in... pgp實現電子郵件安全 一 實驗要求與目的 了解基本原理,學會基本操作,並能熟練使用 二 實驗內容 1 建立一私鑰和公鑰對 使用pgptray 之前,需要用 pgpkeys 生成一對金鑰,包括私有金鑰 只有自身可以訪問 和乙個公有金鑰 可以讓交換 email 的人自由使用 2 與別人交換公鑰 建立了...資料結構實驗報告六(排序實
實驗三 查詢和排序 實驗報告 20162305
PGP實現電子郵件安全 實驗報告