排序算法之直接插入排序
来源:互联网 发布:ios手游网络加速器 编辑:程序博客网 时间:2024/06/01 10:36
直接插入排序
直接插入排序的基本思想就是将一个记录插入到一个排好序的有序表中,从而得到一个新的有序表。
假设一个线性表R[0…n], R[0…i]是有序的,则直接插入排序就是将R[i+1]插入到有序表R[0…i]中,从而使R[0…i+1]成为一个有序表。重复以上的操作,直至将R[n]插入到R[0…n-1]中,则R[0…n]最终成为一个有序的线性表。
实现插入排序(一):有监视哨
设置R[0]为监视哨,临时保存R[i+1]的值,并起到防止下标越界的作用。
数组长度为N+1,下标1~N存数据。
typedef int datatype;int InsertionSort(datatype *array, int size){ int i, j; if(array == NULL) { return -1; } for(i = 2; i <= size; i++) { array[0] = array[i]; //跳出循环时则是找到了插入位置 for(j = i-1; array[j] > array[0]; j--) { array[j+1] = array[j]; } array[j+1]=array[0]; } return 0;}
实现插入排序(二):无监视哨
不设置监视哨,只将R[i+1]保存在一个辅助变量中。
数组长度为N,下标0~N-1存数据。
typedef int datatype;int InsertionSort(datatype *array, int size){ int i, j; int temp; if(array == NULL) { return -1; } for(i = 1; i < size; i++) { temp = array[i]; for(j = i-1; j >= 0; j--) { if(temp >= array[j]) { //找到插入位置,跳出循环 break; } array[j+1] = array[j]; } array[j+1] = temp; } return 0;}
0 0
- 算法-插入排序之直接插入排序
- 排序算法-插入排序之直接插入
- 排序算法之直接插入排序算法
- 算法之直接插入排序
- 排序算法之直接插入
- 【算法】之直接插入排序
- 排序算法之直接插入排序
- java排序算法之直接插入排序
- 排序算法之直接插入排序
- 【排序算法】之直接插入排序
- 排序算法之直接插入排序(JAVA)
- Java算法排序之--直接插入排序
- 排序算法之直接插入排序
- 排序算法之直接插入排序
- 排序算法之直接插入排序
- 排序算法之直接插入排序(java)
- 排序算法之直接插入排序
- 排序算法总结之直接插入排序
- 伪列
- ShadowMap
- OpenCV3.0 + Ubuntu14.04 配置
- pat 1082 Read Number in Chinese
- 查看IOS沙盒中文件的属性(修改日期,创建日期,大小等)
- 排序算法之直接插入排序
- 在知乎上看到的东西啦。fractional cascading
- Tiny C Compiler参考手册
- C++Primer第五版 练习12.2
- 学习Qt(10)
- hadoop使用第三方jar包
- Java设计模式----策略模式(Strategy)
- cppcheck下载及使用
- freemaker在springmvc详解2