算法详解见此网址: http://www.geeksforgeeks.org/archives/8133

我的C++语言实现

#include <iostream>void swap(int* a, int* b)
{*a = *a + *b;*b = *a - *b;*a = *a - *b;
};int main()
{int a[] = {1,0,0,0,1,1,0,0,2,2,2,1,1,0,0,0};int len = sizeof(a) / sizeof(int);std::cout << "Original list:\n";int i = 0;while(i < len){std::cout << a[i] << " ";i++; }std::cout << "\n";int left = 0;int mid = 0;int right = len - 1;while(mid < right){switch(a[mid]){case 0:swap(&a[left++], &a[mid]);break;case 1:mid++;break;case 2:swap(&a[mid], &a[right--]);break;}}std::cout << "Sorted list:\n";i = 0;while(i < len){std::cout << a[i] << " ";i++;    }return 0;
}

荷兰三色旗问题 Dutch national flag problem相关推荐

  1. 荷兰国旗问题(Dutch National Flag Problem)

    问题描述 给定数组中只有"1","2","3"三种数字,且个数不等 排序 最终结果的顺序为:所有的1在前,所有的2在中间,所有的3在后 如: ...

  2. 一首歌的时间看懂荷兰三色旗问题

    给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...

  3. 荷兰国旗问题的解决:额外空间复杂度O(1),时间复杂度O(N)

    荷兰国旗问题:Dutch National Flag Problem a.给定一个序列arr,和一个数字num,把 > num的放在数组右边,把 <= num的放在数组左边         ...

  4. 笔试算法题(55):快速排序实现之三路划分, 三元中值法和插入排序处理小子文件...

    议题:快速排序算法实现之三(三路划分遍历,解决与划分元素相等元素的问题) 分析: 算法原理:使用三路划分策略对数组进行划分(也就是荷兰国旗问题,dutch national flag problem) ...

  5. Three-way Partition

    问题来源于the Dutch national flag problem,荷兰国旗问题? 把数组重新排序,比mid小的在前面,等于mid的在中间,比mid大的在最后,类似于快速排序中的partitio ...

  6. 你面试稳了!通关LeetCode刷题完整攻略,省时又高效

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:穷码农 来源:https://zhuanlan.zhihu.com/p/10 ...

  7. 百亿题典之C++编程题面试题

    原文地址:百亿题典之C++编程题面试题作者:百亿题典 1. 在linked list中找倒数第N个结点 2. 倒转linked list 3. 二叉树的结点有指向parent的指针,求最近公共祖先 4 ...

  8. 三分法 three-way partitioning

    参考:http://blog.jobbole.com/105219/ 先考虑这样一个问题,给定红.白.蓝三种颜色的小球若干个,将其排成一列,使相同颜色的小球相邻,三种颜色先后顺序为红,白,蓝.这就是经 ...

  9. Partition算法

    partition算法是一种分类算法,简单来说就把一个序列分成前后两部分,前一部分都是满足某一条件的元素,后一部分都是不满足该条件的元素.关于partition算法最著名的应用就是quick sort ...

最新文章

  1. windows下安装subversion
  2. nginx配置php项目后403,nginx配置引发的403问题解决办法
  3. MySQL Group Replication数据安全性保障
  4. java条件运算查询学生成绩_java条件运算符的应用实例之成绩分级
  5. 制造-销售”模式正在消亡,传统大型企业的上云之路要如何举步?
  6. 次数匹配(不需要在前面加“\”)
  7. 程序员面试金典——18.5单词最近的距离
  8. Leetcode 99. 恢复搜索二叉树
  9. Idea 里svn的导入使用
  10. 计算机二级python真题3和答案_计算机二级python真题:第3套综合应用题
  11. oracle 报错06502,求助!!ORA-06502错误
  12. linux max open,linux下修改max_user_processes和open_file的最大值
  13. 亭台六七座,八九十枝花——python正则表达
  14. HFSS - 同轴馈电矩形微带天线设计与仿真
  15. ROSROS2可视化仿真软件
  16. vfc格式linux,2021-03-17 在linux上将vcf文件转plink的格式bed,bim,fam
  17. Spring boot连接oracle数据库
  18. 独立样本t检验及其在SPSS中的实现
  19. 标梵分享微信官方账号运营推广思路
  20. 数据结构课程设计 运动会成绩统计

热门文章

  1. puzzle(1523)纪念碑谷2
  2. 分布式理论(五) - 一致性算法Paxos
  3. NBUT 1452 Ezreal (模拟水题)
  4. 如何去掉iframe内嵌页面头部/底部(iframe取部分网页)
  5. css怎么实现右边固定,左边自适应
  6. 二元最佳前缀码_最优前缀编码
  7. 7-8 删除字符串中的子串(20 分)
  8. 进程地址空间(虚拟地址 | 物理内存)
  9. redis跳跃表图解插入详述
  10. 可靠数据传输原理详细图解