直接插入排序
来源:互联网 发布:乐乎lofter重口味 编辑:程序博客网 时间:2024/06/05 16:59
思想:(见图)
方法一:
直接上代码:
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加一是因为上边多减得一个}}
1 0
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序:直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- 01 VoLTE - Introduction
- 神级Win8.1 Update错误代码80073712为何令高手无语
- JavaWEB+Ajax实现文件上传
- centOs拨号上网
- BroadCast广播实例
- 直接插入排序
- Android TelephonyManager类的使用
- RxJava 常见误区(一):过度使用 Subject
- Android-深入理解AIDL
- maven Project configuration is not up-to-date with pom.xml
- Spring中@Transactional用法深度分析之一
- RxJava源码分析之subscribeOn和observeOn
- two sum
- 深入理解java虚拟机--线程安全与优化