本題要求實現簡單選擇排序函式,待排序列的長度1<=n<=1000。
void selectsort(sqlist l);
其中l是待排序表,使排序後的資料從小到大排列。
typedef int keytype;
typedef struct sqlist;
#include#includetypedef int keytype;
typedef struct sqlist;
void creatsqlist(sqlist *l);/*待排序列建立,由裁判實現,細節不表*/
void selectsort(sqlist l);
int main()
return 0;
}/*你的**將被嵌在這裡 */
第一行整數表示參與排序的關鍵字個數。第二行是關鍵字值 例如:
10
5 2 4 1 8 9 10 12 3 6
輸出由小到大的有序序列,每乙個關鍵字之間由空格隔開,最後乙個關鍵字後有乙個空格。
1 2 3 4 5 6 8 9 10 12
**:
void selectsort(sqlist l)
{ int i,j,k;
for(i=1;i其實在程式當中加一些輸出語句,就容易明白簡單選擇排序是什麼過程:
程式有兩層迴圈,當進入第二層迴圈之後,i是不變的,這個時候取j迴圈中每乙個下標對應的elem值,和elem[i]進行逐一比較,如果內迴圈的值有比外迴圈的值小的,把這個值對應的下標取出,然後和i對應的值進行交換。這樣簡單選擇排序的時間複雜度大約是o(n^2),最好情況下移動零次(本身有序);最壞情況下移動3*(n-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 到...