選擇排序演算法c語言代碼「c語言選擇排序法詳情」

上次給大家講了三分鐘快速記住冒泡排序演算法,今天給大家講講選擇排序演算法,依然只用三分鐘就可以快速記住,跟著我一起來吧!

上動畫

三分鐘快速記住選擇排序演算法

三分鐘快速記住選擇排序演算法

給 “6 5 4 3 2 1” 6個數字增序排序的流程

大體過程:

我們把一串待排序的數字分為已排序、和待排序的兩類(當然,初始狀態全都是待排序的)。然後每一趟將待排序中的最小值和待排序中第1個元素交換,此時待排序中第1個元素就能歸到已排序中。將這個流程進行 6 趟就完成了排序。

選擇排序原理:

①、初始時在序列中找到最小(大)元素,放到序列的起始位置作為已排序序列

  ②、再從剩餘未排序元素中繼續尋找最小(大)元素,放到已排序序列的末尾

 ③、以此類推,直到所有元素均排序完畢。

選擇排序與冒泡排序區別:

選擇排序是在剩下的待排序數字裡面找個最小的再交換;冒泡排序是看見小的就交換。

選擇排序代碼:

#include <cstdio>

/* 交換函數

* 傳入:待交換兩元素的地址 */

void swap(int *x, int *y) {

int temp = *x;

*x = *y;

*y = temp;

}

/* 增序的選擇排序

* 傳入:待排序數組a、數組元素個數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); //交換 當前位 和 待排序部分中最小值

}

}

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]);

//輸出結果:2 3 4 5 15 16 23 88 100

}

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/275252.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:20
下一篇 2024-12-17 14:20

相關推薦

發表回復

登錄後才能評論