上一節介紹了如何實現希爾排序,現在介紹一下關於簡單選擇排序的知識。
簡單選擇排序的思想很簡單,首先是先選擇,然後再將選出來的元素(當前最大或最小)與list的首元素進行交換,然後再從剩下的list中選擇當前最大(或最小)的元素,再與未交換的首元素(第二個元素)進行交換,.......直至剩下最後乙個為止,交換完畢,整個排序結束。
舉個按照從小到大排序的栗子:對於乙個原始數為:的陣列中,對它進行簡單選擇排序的過程如下:
1、首先選擇list中最小的乙個元素是4,與首元素49交換
2、在除去0號元素4 後剩下的9個元素中選乙個最小的元素13,與0號之後的1號元素38交換
3、在除去0,1號元素後在剩下的8個元素中選擇乙個最小的元素27,與1號之後的元素65交換
......
n、直至剩下的元素只有乙個,則停止,並且最後的結果即為輸出的正確的排序結果。
具體**實現如下:
#include #include //選擇最小的元素,傳入陣列,陣列長度,從哪個位置開始選擇
int min(int array,int len,int start)
}printf("最小的元素是%d,位置是%d\n",min,position+1);
return position;
}//交換兩個元素(位址傳遞)
void swap(int* a,int* b)
//展示整個陣列
void show(int array,int len)
{ int i;
for(i=0;i
簡單選擇排序 簡單選擇排序詳解
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 到...