簡單選擇排序

2021-09-29 00:09:59 字數 1076 閱讀 9208

通過n-i次關鍵字間的比較,從n-i+1個記錄中選擇出最小的記錄,並和第i(1<= i <= n)個記錄交換之。

#include#define maxsize 20		//陣列大小

typedef int keytype; //關鍵字型別

typedef int infotype; //元素資訊型別

//陣列中元素的資訊

typedef structredtype;

//陣列的型別

typedef structsqlist;

//初始化待排序列

void init(sqlist *l,int a,int length)

l->length = length;

}//交換陣列中兩元素的值

void swap(redtype *p,redtype *q)

//查詢陣列中key最小元素的下標

int selectminkey(sqlist *l,int i)

return min;

}//選擇排序主程式

void selectsort(sqlist *l)

printf("\n下標號:");

for(l = 0;l < 9;l++)

} }}int main();

init(&l,a,9);

printf("排序前:");

for(i = 0;i < 9;i++)

printf("\n下標號:");

for(i = 0;i < 9;i++)

selectsort(&l);

printf("\n\n排序後:");

for(i = 0;i < 9;i++)

printf("\n下標號:");

for(i = 0;i < 9;i++)

printf("\n\n");

return 0;

}

第一趟中從0下標開始往後找最小元素,結果最小元素就是0下標出的元素,所以不做交換。

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

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