直接插入排序
2016-04-10 17:22
176 查看
思想:(见图)
方法一:
直接上代码:
其实是一个有问题的程序,因为出现数组下标是负数了,源于功能能实现,所以摆放于此
方法四:
end为有序序列最后一个元素下标
方法一:
直接上代码:
void InsertSort(int *a,int size) { assert(a); int i, j, tmp; for (i = 0; i < size-1; ++i) { tmp = a[i + 1]; for (j = i; j >= 0; --j) //在有序序列中插入后来数 { if (a[j] > tmp) { a[j+1] = a[j]; } else { break; } } a[j+1] = tmp;//原来时上边的J最后又减了一个 } }方法二:
其实是一个有问题的程序,因为出现数组下标是负数了,源于功能能实现,所以摆放于此
//很可笑的一个问题 void InsertSort(int *a,int size) { assert(a); int i, j, tmp; for (i = 0; i < size-1; ++i) { tmp = a[i + 1]; for (j = i; j >= -1; --j) { if (a[j] > tmp) //[j] j尽然成负数了 { a[j+1] = a[j]; } else { a[j + 1] = tmp; break; } } } }方法三:
//下面就是对的 void InsertSort(int a[], int len) { int i, j, temp; for (i = 1; i<len; i++) { if (a[i]<a[i - 1]) { temp = a[i]; for (j = i - 1; a[j]>temp; j--) a[j + 1] = a[j]; a[j + 1] = temp; } } }
方法四:
end为有序序列最后一个元素下标
void InsertSort(int *a, int size) { assert(a); for (int i = 1; i < size; ++i) { int index = i; int tmp = a[index]; int end = index - 1; while (end >= 0 && tmp < a[end]) { a[end + 1] = a[end]; --end; } a[end + 1] = tmp; //这里end加一是因为上边多减得一个 } }
相关文章推荐
- 北京Uber优步司机奖励政策(4月10日)
- 迷宫第一阶段
- 简单倒叙留言板
- $lineFromFile=fgets($myfile);
- HDU3231Box Relations
- 【Matlab】matlab与matplotlib作图比较
- java中创建对象的方法(转)
- hdu3336 KMP应用
- think python chapter2
- 进销存管理信息系统
- 使用Android Studio打Andorid apk包的流程
- 怎样让oracle实验本在不做实验时性能提升——win7下举例
- 游戏开发者推荐书单
- BestCoder Round #79 (div.2)
- 复习笔记——数据结构
- Mac之Mysql安装
- 以太网在汽车行业中的挑战——灵活的接口及软件使ECU开发不再复杂
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月10日)
- Linux下进程间通信之命名管道(FIFO)
- php 遍历txt文件