奇偶排序问题之单向扫描
来源:互联网 发布:知乎 北上广深 编辑:程序博客网 时间:2024/05/01 11:58
看到July大神的奇偶排序问题,第一反应就是运用partition函数来实现
由于看了算导第二版的lumoto版之后,外加loop invariant证明的深刻影响,基本不太愿意写Hoare版的了。。。虽说文章实验发现元素交换次数多了,但是程序不太会出bug了
void OddEvenSort(int *a, int low, int high){i=low-1;for(j=low->high){if(a[j]%2!=0){i++;swap(a[i],a[j]);}}}
详细解析见 https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/06.07.md
经过和July师兄交流,看到曹博新添加的基于单向扫描的奇偶排序,通过循环不变性发现了区别
void oddEvenSort(int *data, int length) { for (int i = 0, j = 0; j < length; ++j) { if (data[j] % 2) { int temp = data[i]; data[i++] = data[j]; data[j] = temp; } }}
我实现的版本,每一轮loop 保存的性质是 a[low, i]是奇数,a[i+1,j-1]是偶数,因此循环结束之后,最后一个奇数
index是i, 曹博的loop保存性质是a[low,i-1]是奇数,a[i,j-1]是偶数,初始的i不一样,我的是low-1,曹博的是low
看July大神的东西总能激发自己学习的斗志~~
0 0
- 奇偶排序问题之单向扫描
- 排序算法之奇偶排序
- 算法面试:单向链表节点的奇偶排序。
- 奇偶数间隔排序问题
- 快速排序详细分析--单向扫描和双向扫描
- 奇偶数排序,荷兰国旗问题
- 链表奇偶排序以及反转问题
- 《编程之法》:奇偶数排序
- 奇偶排序
- 奇偶排序
- 奇偶排序
- 奇偶排序
- 奇偶排序
- 奇偶排序
- 奇偶排序
- 奇偶排序
- 奇偶排序
- 奇偶排序
- 什么牌子的制氧机好
- 同意大家的同意交通的健康他的一脚踢人体塑化让他
- 禁用Visual Studio 2013的Browser Link功能
- 光电脉搏传感器的研制和噪声分析
- yii自带验证码,解决刷新页面验证码不刷新问题
- 奇偶排序问题之单向扫描
- 用循环数组实现队列
- tcpdump
- 基础笔记:排序算法(一)(选择、插入、冒泡)
- 缺氧的危害_健合制氧机
- win7下解决RalationRose无法关闭并报错的问题
- 渣渣要走了,咱们以后没有人一起玩耍了
- eclipse 添加 未实现的方法 Add unimplemented methods的快捷键
- 家用制氧机什么牌子好?