排序方法實現思想實驗報告(選擇排

2021-06-28 09:46:24 字數 1674 閱讀 2707

提供操作:選擇排序、氣泡排序、插入排序、基數排序

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 資料結構與演算法課程實驗報告 實驗六 排序實踐 姓名 班級 學號 實驗六排序實踐 一 實驗內容 實現各排序演算法,必須實現起泡排序 希爾排序和簡單選擇排序,其他排序演算法選做,並分析各演算法的效能。二 實驗目的 掌握各排序演算法的實現方法,並分析各排序演算法的...

實驗三 查詢和排序 實驗報告 20162305

1 實驗要求 2 實驗過程 3 實驗成果截圖 1 實驗要求 2 實驗過程 3 實驗成果截圖1 實驗要求 2 實驗過程 1 插值查詢 public static comparable insertionsearch int num,int key return 1 2 斐波那契查詢private in...

PGP實現電子郵件安全 實驗報告

pgp實現電子郵件安全 一 實驗要求與目的 了解基本原理,學會基本操作,並能熟練使用 二 實驗內容 1 建立一私鑰和公鑰對 使用pgptray 之前,需要用 pgpkeys 生成一對金鑰,包括私有金鑰 只有自身可以訪問 和乙個公有金鑰 可以讓交換 email 的人自由使用 2 與別人交換公鑰 建立了...