荷兰国旗/三色排序
来源:互联网 发布:网络协议的组成要素 编辑:程序博客网 时间:2024/04/28 16:12
1.荷兰国旗问题:数组只包含0,1,2对其排序
(1)首先最简单的就是计数排序,当然这里不讨论,一般情况下考察的都不是这个
(2)和快排划分过程相似:时间O(n),空间O(1)。
快排划分的时候有个标志位 i=left-1,如果a[j]>x,j++,i++否则j++,,i++,a[j] a[i]互换位置.而该题目可以设置两个标志位,i,j,一个在最左边一个在最右边。对于数组a[0~n-1],初始i=0,j=n;
遍历元素和1比较:
1)如果=1,直接k++,考察下一个数
2)如果=0,左边标志位i++,a[k]a[i]进行交换,考察下一个数
3)如果=2,右边标志位j--,a[k][j]交换,注意这里不能直接考察下一个数,要在对a[k]与1进行比较,a[j]可能是0 1 或者2,所以此时只要将当前位置k不变在做一次比较即可。
4)直到当前位置k和右边标记j相同时,停止
[0,1,1,0,2,2],6
返回:[0,0,1,1,2,2]
public class ThreeColor { public int[] sortThreeColor(int[] a, int n) { // write code here int i=-1; int j=n; for(int k=0;k<j;k++){ if(a[k]==1) continue; if(a[k]==0){ i++; int temp=a[i]; a[i]=a[k]; a[k]=temp; continue; } if(a[k]==2){ j--; int temp=a[j]; a[j]=a[k]; a[k]=temp; k--; } } return a; }}
阅读全文
0 0
- 荷兰国旗/三色排序
- 三色排序(荷兰国旗问题)
- 荷兰国旗问题,三色排序
- 荷兰国旗-三色查找
- 三色排序问题/(荷兰国旗问题)(C++版)
- 荷兰国旗排序
- 三色棋问题(荷兰国旗问题)
- 75. Sort Colors--荷兰三色国旗问题
- 荷兰国旗问题--快速排序的变种
- 奇偶数排序,荷兰国旗问题
- 荷兰国旗排序的几种解法
- 数组------荷兰国旗问题(颜色排序)
- 荷兰国旗问题(改造快速排序)
- 排序相关——荷兰国旗问题
- 荷兰国旗
- 荷兰国旗
- 荷兰国旗
- 荷兰国旗
- Spring Boot框架
- 30_Filter_登录过滤器的实现
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 31_Filter_乱码过滤器的实现
- 荷兰国旗/三色排序
- 输入三个整数x,y,z,请把这三个数由小到大输出。
- Dragonboard410c Android USB Camera 使用:mjpg-streamer 在ubuntu16.04安装与使用(二)
- 周志华《机器学习》课后习题解答系列(七):Ch6.3
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- 转载的一个很好的INI写入类
- 12个必备的JavaScript装逼技巧
- Serializable兼容性问题及serialVersionUID的使用
- spark-submit 参数