内部排序算法之简单插入排序
来源:互联网 发布:怀念林正英软件 编辑:程序博客网 时间:2024/06/06 05:36
先贴一段简单插入排序的代码:
void insertion_sort(int* p, int n){ int i, k, j; for(i=1; i<n; ++i) { k = p[i]; j = i-1; while(j>=0 && p[j] > p[i]) { p[j+1] = p[j]; --j; } p[j+1] = k; }}
编译运行一看,错了, 结果不对啊。 可是仔细分析, 好像也没有错啊。 奇怪了。
再贴一段代码:
void insertion_sort(int* p, int n){ int i, k, j; for(i=1; i<n; ++i) { k = p[i]; j = i-1; while(j>=0 && p[j] > k) // 注意这里的区别 { p[j+1] = p[j]; --j; } p[j+1] = k; }}
编译运行一看, 这次排序结果是对的。两个代码片段唯一不同的地方在while语句里面, 一个是p[j > p[i], 一个是p[j] > k, 但是 k = p[i],粗略一看, 逻辑一样啊,为什么上面运行不对, 下面代码运行正确, 这不科学啊。
思索N久, 没有结果。先记录下来,过两天再仔细考虑, 或者汇编看看。
0 0
- 内部排序算法之简单插入排序
- 内部排序算法之插入排序
- 常用内部排序算法之四:简单选择排序、直接插入排序和冒泡排序
- 内部排序算法:插入排序
- C++简单排序算法之插入排序
- 排序算法之简单插入排序法
- Java排序算法之简单插入排序
- 排序算法之简单插入排序
- 内部排序算法之四【直接插入排序】
- 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)
- 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)
- 内部排序之插入排序、希尔排序
- 内部排序之插入排序,希尔排序
- 内部排序之插入排序、希尔排序
- 排序算法之简单插入算法
- Java简单算法之 冒泡排序 选择排序 插入排序
- 【基础算法】排序-简单排序之三(插入排序)
- 内部排序算法之五【二分插入算法】
- STM32串口中断方式接收
- IBatis XML中的各种Sql语句突然报错
- Ruby中yield和block的用法
- 本地计算机上的oracleoradb11g启动又停止
- 用android自带的gdb与gdbserver调试native C/C++程序
- 内部排序算法之简单插入排序
- C++ qt dynamic_cast const_cast static_cast类型转换
- linux基本命令
- 2013.12.10
- Android Cursor之MergeCursor
- 黑马程序员-队Collection集合 Map集合的小总结
- Python学习笔记(一)----Python基础知识
- Android ImageView图片自适应
- SIMD(MMX/SSE/AVX)变量命名规范心得