排序-直接插入排序
2016-04-02 17:49
225 查看
插入排序
插入排序相比直接选择排序,效率更高些。
插入排序有下面几个步骤:
1.找到要交换的元素,将该元素赋值给哨兵
2.从相应的位置移动元素,取决于你的比较方法,大于还是小于,最后移动的结果是空出一个位置留给哨兵元素
3.将哨兵元素放到第二步空出的位置中
4.继续循环上面饿步骤知道全部排序完成
代码:
main测试
全部原创,欢迎指正
插入排序相比直接选择排序,效率更高些。
插入排序有下面几个步骤:
1.找到要交换的元素,将该元素赋值给哨兵
2.从相应的位置移动元素,取决于你的比较方法,大于还是小于,最后移动的结果是空出一个位置留给哨兵元素
3.将哨兵元素放到第二步空出的位置中
4.继续循环上面饿步骤知道全部排序完成
代码:
//普通数组的插入排序,从小到大排序 void InsertSort(int* L, int length) { int temp = 0;//哨兵 for (int i = 1; i < length; i++) { if (L[i] < L[i - 1]) { temp = L[i];//要交换的值赋值给哨兵 for (int j = i - 1; L[j] > temp; j--) { L[j + 1] = L[j];//元素依次后移 } L[j + 1] = temp;//将哨兵放到要插入的位置 } } }
main测试
#include <stdio.h> int main(void) { int x[10] = { 5, 3, 2, 1, 7, 4, 6, 9, 8, 10 }; InsertSort(x, 10); for (int i = 0; i < 10; i++) { printf("%d ", x[i]); } system("pause"); return 0; }
全部原创,欢迎指正
相关文章推荐
- java面向对象中的方法重载与方法重写的区别
- 图解VC++ opengl环境配置和几个入门例子
- 纯JS实现中国行政区域上下联动选择地址
- hdoj 天气情况 1437 (打表&数学)
- 【BZOJ 1875】【SDOI 2009】HH去散步
- nyoj拦截导弹
- 给2016年的自己
- ubuntu12.04+ros fuerte 跑ORB_SLAM代码
- Java序列化与反序列化
- ROS知识要点
- 如何判断Edittext输入完成
- 并查集
- vijos:P1155集合位置(次短路)
- 使用fdisk e2fsck resize2fs调整Linux分区大小
- Android postTranslate和preTranslate
- 改进Android SlidingMenu实现QQ样式边侧滑抽屉技术
- Apache日志切割及不记录指定类型日志
- HDFS DataNode 设计实现解析
- hdoj 幸福列车 1434 (模拟&队列)
- ROS系统安装