博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单选择排序
阅读量:6767 次
发布时间:2019-06-26

本文共 1260 字,大约阅读时间需要 4 分钟。

引自

直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。

 

设数组为a[0…n-1]。

1.      初始时,数组全为无序区为a[0..n-1]。令i=0

2.      在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。交换之后a[0…i]就形成了一个有序区。

3.      i++并重复第二步直到i==n-1。排序完成。

 

 

1 #include
2 #define N 10 3 4 void Display(int *a, int n) 5 { 6 int i; 7 for (i = 0; i < n; i++) { 8 printf("%d ", a[i]); 9 }10 printf("\n");11 }12 13 void SelectionSort(int *a, int n)14 {15 int i, j, index, value;16 17 for (i = 0; i < n - 1; i ++) {18 index = i;19 value = a[i];20 for (j = i + 1; j < n; j ++)21 if (value > a[j]) {22 index = j;23 value = a[j];24 }       //找出最小的值之后再交换,即在循环外部交换最小值25 a[index] = a[i];26 a[i] = value;27 Display(a, n);28 }29 }30 31 void main()32 {33 int a[N],i ;34 for(i=0;i

结果:

10 9 8 7 6 5 4 3 2 1 1 9 8 7 6 5 4 3 2 10 1 2 8 7 6 5 4 3 9 10 1 2 3 7 6 5 4 8 9 10 1 2 3 4 6 5 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10

 

附一个swap交换的问题

inline void Swap1(int &a, int &b){    if (a != b)//若ab相同则结果会出现0,异或自己为0    {        a ^= b;        b ^= a;        a ^= b;    }}

 

转载地址:http://dfeeo.baihongyu.com/

你可能感兴趣的文章
BundlePhobia
查看>>
css加载会造成阻塞吗
查看>>
CSDN 文章自动显示全文
查看>>
遇到大牛如何获得联系方式及请教问题
查看>>
S/4HANA生产订单增强WORKORDER_UPDATE方法BEFORE_UPDATE参数分析
查看>>
Objective-C-如何选择@property-和-Instance-Variable(iVar)
查看>>
WEB前端开发的思考与感悟
查看>>
Django搭建个人博客:文章标签功能
查看>>
Go 语言编译过程概述
查看>>
为什么要做短视频秒播优化
查看>>
《微服务设计》读书笔记(关于微服务的一点想法)
查看>>
最小外接矩形思路以及实现
查看>>
借助工具完成js 合并及压缩混淆处理
查看>>
PAT A1063
查看>>
时序数据库连载系列:时序数据库那些事
查看>>
如何制作可以在 MaxCompute 上使用的 crcmod
查看>>
行为型模式:迭代器模式
查看>>
测试格式
查看>>
CentOS 7 将 Nginx 添加系统服务
查看>>
uni-app 1.4 发布,一套代码,发行小程序(微信/支付宝/百度)、H5、App多个平台...
查看>>