
文章插圖
上次給大家講了三分鐘快速記住冒泡排序算法,今天給大家講講選擇排序算法,依然只用三分鐘就可以快速記住,跟著我一起來吧!
上動畫給 “6 5 4 3 2 1” 6個數(shù)字增序排序的流程
大體過程:
我們把一串待排序的數(shù)字分為已排序、和待排序的兩類(當(dāng)然,初始狀態(tài)全都是待排序的) 。然后每一趟將待排序中的最小值和待排序中第1個元素交換,此時待排序中第1個元素就能歸到已排序中 。將這個流程進行 6 趟就完成了排序 。
選擇排序原理:
①、初始時在序列中找到最?。ù螅┰兀诺叫蛄械钠鹗嘉恢米鳛橐雅判蛐蛄?br /> ②、再從剩余未排序元素中繼續(xù)尋找最小(大)元素,放到已排序序列的末尾
?、?、以此類推,直到所有元素均排序完畢 。
選擇排序與冒泡排序區(qū)別:
選擇排序是在剩下的待排序數(shù)字里面找個最小的再交換;冒泡排序是看見小的就交換 。
選擇排序代碼:
#include <cstdio>
/* 交換函數(shù)
* 傳入:待交換兩元素的地址 */
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
/* 增序的選擇排序
* 傳入:待排序數(shù)組a、數(shù)組元素個數(shù)n */
void selectSort(int a[], int n) {
/* 進行n趟操作 */
for(int i = 0; i < n; i++) {
int min_index = i; //記錄待排序部分中最小值的下標
/* 掃描待排序部分,知道到最小值的下標 */
for(int j = i; j < n; j ++) {
if(a[j] < a[min_index])
min_index = j; //時刻更新最小值下標
}
swap(a + i,a + min_index); //交換 當(dāng)前位 和 待排序部分中最小值
}
}
int main() {
int a[] = {5,2,3,4,15,16,100,23,88};
selectSort(a, 9);
for(int i = 0; i < 9; i++)
printf(“%d “, a[i]);
//輸出結(jié)果:2 3 4 5 15 16 23 88 100
}
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 情感咨詢:相親認識2個男生該如何選擇
- 考研怎樣選擇學(xué)校 如何選擇考研學(xué)校?
- 新奇!星座選擇有氧健身
- 運動應(yīng)該選擇在飯前還是飯后
- 防癌要選擇適合自身的鍛煉項目和強度
- 男人快速增肌的營養(yǎng)選擇
- 教你怎樣選擇佳樓層 1一32高樓層選佳樓層
- excel篩選重復(fù)數(shù)據(jù)并排序 按日期排序怎么設(shè)置
- 不同人群該如何正確選擇健身路徑
- 《小敏家》為何陳卓前妻李萍會選擇跟他離婚呢
