c语言选择排序法详情(选择排序算法c语言代码)

发布日期:2024-11-22 01:55:18     手机:https://m.xinb2b.cn/wenda/news103320.html    违规举报
核心提示:上次给大家讲了三分钟快速记住冒泡排序算法,今天给大家讲讲选择排序算法,依然只用三分钟就可以快速记住,跟着我一起来吧! 上动画 给 “6 5 4 3 2 1” 6个数字增序排序的流程 大体过程: 我们把一串待排序的数字分为已排序、和

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;

}

void selectSort(int a[], int 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://wenda.xinb2b.cn/news103320.html,转载请注明出处。

推荐图文
推荐问答知道
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  违规举报  |  蜀ICP备18010318号-4  |  百度地图  | 
Processed in 0.068 second(s), 91 queries, Memory 0.46 M