排序算法(五) 简单选择排序
来源:互联网 发布:培训交互设计师知乎 编辑:程序博客网 时间:2024/05/21 22:16
一、什么是选择类排序?
顾名思义,选择类排序的核心就是“选择”,为什么选择呢?怎么样选择呢?
选择类排序的基本思路就是:
在待排序序列中选择一个最小(最大)的元素出来,并将之放到合适的位置上,最终将待排序序列变成一个有序的序列。
二、有哪些选择类的排序算法?
根据选择元素的方式不同,我们讨论两种选择类排序算法:简单选择排序和堆排序。其中简单选择排序是通过遍历待排序元素来选择得到一个待排元素,而堆排序是通过大根堆或小根堆堆出一个待排元素,两者效率差距较大。简单来说,堆排序比简单选择排序效率更高一些。但堆排序也比简单选择排序算法实现更复杂,本节只介绍简单选择排序,下节来说说堆排序!
三、理解简单选择排序:
四、源代码实现:
/***功能: 简单选择排序法升序排序一个序列**参数说明:**@record : 序列数组 @len : 序列长度**返回值: 无*/void SelectSort(int record[], int len){int i, j;int index;for (i = 0; i < len;i++){index = i; //保存最小元素位置的下标//在待排序列中找到一个最小元素作为待排元素for (j = i + 1; j < len;j++){if (record[j] < record[index]){index = j;}}//如果找到的最小元素下标与i(待排位置下标)不相同,则执行交换。否则不用交换if (index != i){int temp = record[i];record[i] = record[index];record[index] = temp;}}}int main(void){int record[] = { 46,55,13,42,94,17,05,70 }; int len = sizeof(record) / sizeof(record[0]);int i = 0;printf("排序前: \n");for (i = 0;i < len;i++){printf("%d ", record[i]);}puts("");SelectSort(record, len);printf("排序后: \n");for (i = 0;i < len;i++){printf("%d ", record[i]);}puts("");return 0;}
运行截图:
阅读全文
0 0
- 排序算法(五) 简单选择排序
- java算法之五简单选择排序(选择排序)
- 简单选择排序算法----(排序算法五)
- 常用算法总结之排序(五)----简单选择排序
- 排序算法(五)——简单选择排序
- (五)简单排序—选择排序
- 排序算法(五)- 选择排序
- 排序算法(五)选择排序
- 五、排序算法(选择排序、插入排序、希尔排序)
- 排序五 简单选择排序
- 简单排序算法:简单选择排序(选择排序)
- [排序算法,选择排序]--简单选择排序
- 排序算法(二)简单选择排序
- 排序算法(三):简单选择排序
- 排序算法(1)-简单选择排序
- 排序算法(3)-简单选择排序
- 排序算法 -- (三)简单选择排序
- 排序算法(三):简单选择排序
- 十三:表达式if ... else
- 算法练习(24):Counting Bits
- java 金额计算不能用float、doube!!!!必须用BigDecimal
- 第一道BFS
- SDUT-oj 时间日期格式转换(详解)
- 排序算法(五) 简单选择排序
- 配置NODE_HOME
- MapReduce原理
- java面试题jvm字节码的加载与卸载
- phpMyAdmin配置文件config.inc.php正确配置
- Android Studio导入项目在 Building gradle project info 卡住的解决办法
- 十四:表达式for loop
- MyBatis映射文件(集合数据的添加与获取,条件查询,模糊查询)
- Local Discovery简介