排序 簡單選擇排序

2021-08-30 19:17:17 字數 860 閱讀 3036

簡單選擇排序又稱直接選擇排序。其演算法思維較為簡單,是一種簡單的排序演算法。

圖示:假設原紀錄為:,每次挑選的最小元素(黃色),已排記錄(藍色)。

演算法步驟:

假設待排元素無序儲存在陣列a[n]中,從第一趟開始,通過n-1次比較獲得最小元素,記其下標為min,交換a[0]和a[min]。a[0]不參與以後的比較。

第二趟排序,通過n-2次比較獲取最小元素,記其下標為min,交換a[1]和a[min]。a[1]不參與以後的比較。

第三趟排序,通過n-3次比較獲取最小元素,記其下標為min,交換a[2]和a[min]。a[2]不參與以後的比較。

依次迴圈,第i趟排序,通過n-i次比較,從n-i+1個元素中找出最小的元素,記下標為min,交換a[i-1]和a[mid]。

經過n-1趟排序後,形成有序公升序表。

c語言**描述:

#include //簡單選擇排序 

void selectsort (int a,int n)

if(min-i) }}

void print (int a,int n){//陣列輸出函式

int i;

for(i=0;i執行結果:

時間複雜度分析:每趟挑選出最小的元素需要o(n),一共需要n-1次,故演算法的時間複雜度近似o(n^2)。

空間複雜度:因為只需要乙個空間來臨時存放待交換元素,故空間複雜度為o(1)。

簡單選擇排序 簡單選擇排序詳解

n個記錄的檔案的直接選擇排序可經過n 1趟直接選擇排序得到有序結果 初始狀態 無序區為r 1.n 有序區為空。第1趟排序 在無序區r 1.n 中選出關鍵字最小的記錄r k 將它與無序區的第1個記錄r 1 交換,使r 1.1 和r 2.n 分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區...

選擇排序 簡單選擇排序

在要排序的一組數中,選出最小 或者最大 的乙個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後乙個數 比較為止。第一趟,從n個記錄中找出關鍵碼最小的記錄與第乙個記錄交換 第二趟,從第二個記錄開始的n ...

選擇排序 簡單選擇排序

1.選擇排序 簡單選擇排序,堆排序 與交換排序 氣泡排序,快速排序 的區別 每次比較如果發現較小的元素在後面,就交換兩個相鄰的元素。而選擇排序演算法的改進在於 先並不急於調換位置,先從a 1 開始逐個檢查,看哪個數最小就記下該數所在的位置p,等一躺掃瞄完畢,再把a p 和a 1 對調,這時a 1 到...