C语言选择排序

上传人:M****1 文档编号:563499735 上传时间:2023-01-11 格式:DOCX 页数:6 大小:11.86KB
返回 下载 相关 举报
C语言选择排序_第1页
第1页 / 共6页
C语言选择排序_第2页
第2页 / 共6页
C语言选择排序_第3页
第3页 / 共6页
C语言选择排序_第4页
第4页 / 共6页
C语言选择排序_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《C语言选择排序》由会员分享,可在线阅读,更多相关《C语言选择排序(6页珍藏版)》请在金锄头文库上搜索。

1、基本思想及举例说明简单选择排序(从小到大)的基本思想是,首先,选出最小 的数,放在第一个位置;然后,选出第二小的数放在第二个位置; 以此类推,直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其 与第i个数进行交换。下面,以对3 2 4 1进行选择排序说明排序过程,使用minndex记 录当前最小的数所在的位置。第1轮排序过程(寻找第1小的数所在的位置)3 2 4 1 (最初,min_index=1)3 2 4 1( 3 2,所以 min_index=2)3 2 4 1( 2 1,所以min_index=4,这时候确定了第1小的数在 位置4)1 2 4 3 (第

2、1轮结果,将3和1交换,也就是位置1和位置4交换)第2轮排序过程(寻找第2小的数所在的位置)1 2 4 3 (第1轮结果,min_index=2,只需要从位置2开始寻找)1 2 4 3 (4 2 ,所以 min_index=2 )1 2 4 3 ( 3 2 ,所以 min_index=2 )1 2 4 3 (第2轮结果,因为min_index位置刚好在第2个位置,无需交换)第3轮排序过程(寻找第3小的数所在的位置)1 2 4 3 (第2轮结果,min_index=3,只需要从位置2开始寻找)1 2 4 3( 4 3,所以 min_index=4)1 2 3 4 (第3轮结果,将3和4交换,也就

3、是位置4和位置3交换) 至此,排序完毕。总结及实现选择排序对大小为N的无序数组RN进行排序进行N-1轮选择过程。第i轮选取第i小的数,并将其放在第i个位置上。当第N-1次完成时,第N小(也就是最大)的数自然在最后的位置上。下面给出选择排序的C语言实现。基本思想及举例说明简单 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。在实现上,我们通常是先确定第 i 小的数所在的位置,然后,将其与第 i 个数进行交换。下面,以对 3 2 4 1 进行选择排序说明排序过程,使用 min_index 记录 当前最小

4、的数所在的位置。第 1 轮 排序过程 (寻找第 1 小的数所在的位置)3241 (最初, min_index=1 )3241 (3 2 ,所以 min_index=2 )3241 (2 1,所以 min_index=4 , 这时候确定了第 1 小的数在位置 4 )1 2 4 3 (第 1 轮结果,将 3 和 1 交换,也就是位置 1 和位置 4 交换)第 2 轮 排序过程 (寻找第 2 小的数所在的位置)1 2 4 3 (第1轮结果,minndex=2,只需要从位置2开始寻找)1 2 4 3( 4 2, 所以 min_index=2)1 2 4 3( 3 2, 所以 min_index=2)1

5、 2 4 3 (第2轮结果,因为min_index位置刚好在第2个位置,无需交 换)第3轮排序过程 (寻找第3小的数所在的位置)1 2 4 3 (第2轮结果,minndex=3,只需要从位置2开始寻找)1 2 4 3( 4 3, 所以 min_index=4)1 2 3 4(第3轮结果,将3和4交换,也就是位置4和位置3交换)至此,排序完毕。总结及实现选择排序对大小为N的无序数组RN进行排序进行N-1轮选择过程。 第i轮选取第i小的数,并将其放在第i个位置上。当第N-1次完成时, 第N小(也就是最大)的数自然在最后的位置上。下面给出选择排序的 C 语言实现。#include#include#i

6、nclude using namespace std;void select_sort(int a,int&n); 采用 C+中的引用操作;/选择排序实现void select_sort(int a,int&n)/n 为数组 a 的元素个数进行N-1轮选择for(inti=1-1; i=i; j-)if(aj amin)min= j;将第i小的数,放在第i个位置;如果刚好,就不用交换if( i != min)int temp = ai;ai = amin;amin = temp;intmain() intnum = 89, 38, 11, 78, 96, 44, 19, 25;int N=si

7、zeof(num)/sizeof(num0); /计算数组中元素的个数select_sort(num, N);for(inti=0; iN; i+)coutnumiendl;system(pause);return 0;注意:选择排序是一种不稳定的排序算法,可能会打乱两个相同数字的原有顺 序。例如,序列 5 8 5 2 9, 按照从小到大排序,第一轮会将第1 个数字 5 会和2 交换,那么原序列中2 个 5 的相对前后顺序就被破坏了,所以选择 排序是一种不稳定的排序算法。注意:选择排序是一种不稳定的排序算法,可能会打乱两个相同数字的原有顺序。 例如,序列5 8 5 2 9,按照从小到大排序,第一轮会将第1个数字 5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选 择排序是一种不稳定的排序算法。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号