直接插入排序 原创 排序算法 2021年7月16日 07:12 夏至未至 1462 当前内容 1361 字,在路上,马上到,马上到 思想:(见图)  方法一: 直接上代码: ```cpp 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最后又减了一个 } } ``` 方法二: 其实是一个有问题的程序,因为出现数组下标是负数了,源于功能能实现,所以摆放于此 ```cpp //很可笑的一个问题 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; } } } } ``` 方法三 ```cpp //下面就是对的 void InsertSort(int a[], int len) { int i, j, temp; for (i = 1; itemp; j--) a[j + 1] = a[j]; a[j + 1] = temp; } } } ``` 方法四: ```cpp 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加一是因为上边多减得一个 } } ``` 本文标题: 直接插入排序 本文作者: 夏至未至 发布时间: 2021年7月16日 07:12 最近更新: 2022年2月23日 09:47 原文链接: 许可协议: 署名-非商业性-禁止演绎 4.0 国际(CC BY-NC-ND 4.0) 请按协议转载并保留原文链接及作者 排序方法(4) 直接插入排序(1) 上一个 计数排序 下一个 希尔排序 当前文章评论暂未开放,请移步至留言处留言。