选择排序和插入排序
来源:互联网 发布:单片机模拟键盘输入 编辑:程序博客网 时间:2024/05/22 06:53
/*有两种简单排序算法分别是插入排序和选择排序,两个都是数据量小时效率高。
实际中插入排序一般快于选择排序,由于更少的比较和在有差不多有序的集合表现更好的性能。
但是选择排序用到更少的写操作,所以当写操作是一个限制因素时它被使用到*/
算法:将数组分为两部分,一部分是已经排好顺序的,另一部分是未排序的。每次找数组后半部分中最小的一个元素排到前面的序列。
//选择排序 Best:n^2 Average:n^2 Worst:n^2 Memory:1 Stable:No
void SelectionSort(int* pDataArray, int iDataNum){ for (int i = 0; i < iDataNum - 1; i++) //从第一个位置开始 { int index = i; for (int j = i + 1; j < iDataNum; j++) //寻找最小的数据索引 if (pDataArray[j] < pDataArray[index]) index = j; if (index != i) //如果最小数位置变化则交换 DataSwap(&pDataArray[index], &pDataArray[i]); }}
插入排序 Best:n Average:n^2 Worst:n^2 Memory:1 Stable:Yes
void insertSort(int *array, int len) { int i, j, temp; for(i = 1; i < len; i ++) { temp = array[i]; for(j = i - 1; j >= 0; j --) { if(array[j] > temp) //找到合适位置插入 { array[j + 1] = array[j]; //大于部分往后移动 }else { break; } } array[j + 1] = temp;//插入新值temp,即array[i] } }
/*
1.3 插入排序与选择排序的区别
插入排序类似于选择排序,不同之处是插入排序是一个元素一个元素地往有序序列中插入,而选择排序则是在无序序列中选择最大(最小)
元素放入有序队列末尾。一个主要操作有序队列,一个则是无序队列。这样就导致选择排序每次都要遍历一次无序队列,而插入排序则不
需要遍历整个有序队列,只需要遍历到该元素应有的位置即可,这样就使得基本有序的队列的复杂度为O(n).
但同时这会导致插入排序用到更多的写操作,因为内部循环时他对数组进行大量的移位操作,大家知道移位操作对于数组是非常低效率的。
而选择排序因为每次添加元素都是添加在末尾,所以不需要移位操作。
*/
阅读全文
0 0
- 插入排序和选择排序
- 选择排序和插入排序
- 选择排序和插入排序
- 选择排序和插入排序
- 选择排序和插入排序
- 插入排序和选择排序
- 选择排序和插入排序
- 插入排序和选择排序
- 选择排序和插入排序
- 选择排序和插入排序
- 插入排序和选择排序
- 选择排序和插入排序
- 选择排序和插入排序
- 选择和插入排序
- 冒泡排序 选择排序和插入排序
- 冒泡排序、插入排序和选择排序
- 冒泡排序和插入排序,选择排序
- 插入排序,选择排序和快速排序
- 几个记录
- 网络安全行业结合了国际智慧和技能
- Docker(ubuntu安装)
- Rrtrofit源码解读
- 课程设计 最小时间 最短路径 模板 .
- 选择排序和插入排序
- Spring中使用纯JDBC连接数据库的配置
- java web如果把一些配置数据保存到本地。
- TP5验证规则
- 2015.3买的书籍
- 排序算法的时间复杂度和空间复杂度表
- Arrays.sort()
- 安卓版围棋软件《飞燕围棋》的计划
- Greenplum 点查(按PK查询)性能与提升空间