簡單選擇排序

2021-07-05 12:55:10 字數 849 閱讀 9320

簡單選擇排序(****** selectsort)演算法的基本思想是:從待排序的記錄序列中選擇關鍵碼最小(或最大)的記錄並將它與序列中的第乙個記錄交換位置;然後從不包括第乙個位置上的記錄序列中選擇關鍵碼最小(或最大)的記錄並將它與序列中的第二個記錄交換位置;如此重複,直到序列中只剩下乙個記錄為止。

設待排序的順序表sqlist中有n個記錄,簡單選擇排序要進行n-1趟,第1趟從n個記錄選擇關鍵碼最小(或最大)的記錄並與第1個記錄交換位置;第2趟從第2個記錄開始的n-1個記錄中選擇關鍵碼最小(或最大)的記錄並與第2個記錄交換位置。一般地,第i趟從第i個記錄開始的n-i+1個記錄中選擇關鍵碼最小(或最大)的記錄並與第i個記錄交換位置,所以,第n-1趟比較最後兩個記錄選擇關鍵碼最小(或最大)的記錄並與第n-1個記錄交換位置。

public

void

******selectsort(seqlist sqlist)

}tmp = sqlist[i];

sqlist[i] = sqlist[t];

sqlist[t] = tmp;

}}

在簡單選擇排序中,第一次排序要進行n-1次比較,第二次排序要進行n-2次比較,第n-1排序要進行1次比較,所以總的比較次數為:

在各次排序時,記錄的移動次數最好0次,最壞為3次,所以,總的移動次數最好為0次,最壞為3次。因此,簡單選擇排序演算法的時間複雜度為o(n2)。

簡單選擇排序演算法只需要乙個輔助空間用於交換記錄,所以,簡單選擇排序演算法是一種穩定的排序方法。

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

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 到...