/*********************************************
荷兰国旗:
1,分别定义i,j,t,i最小下标,j最大下标,t从头遍历到j的下标。
2,如果t指向的球是0,要与i互换(i++,t++)。
3,如果t指向的球是1,不用互换(t++)。
3,如果t指向的球是2,与j互换(j--)。
注意事项:第3步不要执行t++因为与最后元素互换后,
t可能指向0或者2元素,还需要与i再进行一次比较。
************************************************/
#include<stdio.h>
void hh(int *p1,int *p2) //互换函数
{int temp;temp = *p1;*p1 = *p2;*p2 = temp;
}
void helan(int a[])
{int i = 0,j = 7,t = 0;//i最小下标j最大下标,t从i遍历到j的下标while(t<=j){if(a[t]==0)//如果是红球与i指向的元素互换{hh(&a[t],&a[i]);i++;t++; }else if(a[t]==1)//如果是白球不需要互换 {t++;}else//如果是蓝球与j指向的元素互换 {hh(&a[t],&a[j]);j--;//不要执行t++因为与最后元素互换后,t可能指向0或者2元素,还需要与i进行一次比较}}
}
void main()
{int i,a[8] = {2,1,1,0,2,2,0,1};helan(a);//传递最小下标和最大下标 for(i = 0;i<8;i++){printf("%d\t",a[i]);}}

C语言 荷兰国旗解法相关推荐

  1. Algorithm:C+语言实现之数组相关算法(和为定值的两个数、和为定值的m个数、荷兰国旗、长度为2n的洗牌算法、任意长度数组的洗牌算法)

    Algorithm:C+语言实现之数组相关算法(和为定值的两个数.和为定值的m个数.荷兰国旗.长度为2n的洗牌算法.任意长度数组的洗牌算法) 目录 数组 1.寻找和为定值的两个数 2.和为定值的m个数 ...

  2. 荷兰国旗排序的几种解法

    荷兰国旗排序的几种解法 leetcode 排序 算法 分治 Given an array with n objects colored red, white or blue, sort them so ...

  3. 推土机(快排)荷兰国旗思路

    前言 仅记录学习笔记,如有错误欢迎指正. 题目 给一个数据 小于数据中的某个数都在左边 大于这个数的 在右边 要求 时间复杂度O(N) 空间复杂度O(1) 解法: //给一个数据 小于数据中的某个数都 ...

  4. 荷兰国旗问题(改造快速排序)

    本总结是是个人为防止遗忘而作,不得转载和商用. 题目 问题:现有红.白.蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起. PS:之所以叫荷兰国旗问题,是因为 ...

  5. 【Algorithm】算法设计与分析(第二版)- 王红梅 - JAVA / C++实现:3.9 荷兰国旗问题

    题目 : 荷兰国旗问题.要求重新排列一个由字符R,W,B(R代表红色,W代表白色,B代表兰色,这都是荷兰国旗的颜色)构成的数组,使得所有的R都排在最前面,W排在其次B排在最后.为荷兰国旗问题设计一个算 ...

  6. python单链表实现荷兰国旗问题_这道荷兰旗问题,我面试时遇到三次!

    01.题目示例 "荷兰国旗问题" 是计算机科学中的一个经典题目,它是由Edsger Dijkstra提出的.荷兰国旗由红.白.蓝三色组成. 荷兰国旗问题:现在有若干个红.白.蓝三种 ...

  7. 荷兰国旗 Flag of the Kingdom of the Netherlands

    问题描述:现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右的球依次为红球.白球.蓝球.这个问题之所以叫做荷兰国旗,是因为将红白蓝三色的小球弄成条状物,并有序排列 ...

  8. 算法练习day4——190321(小和、逆序对、划分、荷兰国旗问题)

    归并排序快的原因: 后面的排序利用了前面排序的结果!!! 1.小和问题 在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和. 求一个数组的小和. 例子:[1,3,4,2,5] 1 ...

  9. leetcode 75. Sort Colors | 75. 颜色分类(荷兰国旗问题,快速排序)

    题目 https://leetcode.com/problems/sort-colors/ 题解 快速排序3.0(随机快排+荷兰国旗技巧优化) 在arr[L-R]范围上,进行快速排序的过程: 1)在这 ...

最新文章

  1. 分布式系统工程实现:GFSamp;Bigtable设计的优势,互联网营销
  2. MyBatis01 Idea中搭建MyBatis开发环境
  3. 使用 icon 字体图标出现小方块问题
  4. Spring-AOP @AspectJ语法基础
  5. 06_基本的图像分类案例、导入图片数据、探索数据的格式、数据预处理、构建模型(设置层、编译模型)、训练模型(Fit模型、评估精确度)、得出预测结果(验证预测结果)、使用训练过的模型
  6. 后端技术:Web安全常见漏洞和修复建议,值得收藏!
  7. 90-20-010-源码-调试-Kylin-2.6.0源码调试
  8. 【luogu P2831 愤怒的小鸟】 题解
  9. 【第158期】游戏策划:给@zhang的简历分析
  10. [ERROR] InnoDB: Write to file (merge)failed at offset 4249878528, 1048576 bytes should have been wri
  11. 辨别尸体死亡时间! [转]
  12. 如何生成王者荣耀、QQ飞车等游戏“空白名”、“重复名”等特殊名
  13. 地铁一公里造价达7亿元,大部分城市无法回本,为何还抢着建?
  14. 搜索 阿虚同学_凉宫春日阿虚台词“在虚构的故事当中寻求真实感的人脑袋一定有问题”动画是出自那一集?...
  15. 01_ue4进阶_PBR材质
  16. 认识SFP/SFP+/QSFP/QSFP+光模块
  17. “低碳生活,绿建未来”主题活动——微信运动步数打卡比赛统计分析
  18. 虚拟机终端输入sudo的密码时,无法输入密码
  19. cxf webservice接口
  20. 快手投放:快手电商留存分析

热门文章

  1. font字体相关样式
  2. 机器人创客加盟的几点建议
  3. 计算机及应用的课程论文,机器学习课程论文计算机软件及应用it计算机专业资料.doc...
  4. 微信h5 签名错误 php,【微信jsApi 支付】微信内H5调起支付时,提示“验证签名失败”...
  5. MCMC(一):蒙特卡罗方法和马尔科夫链
  6. linux命令模式怎样上网,linux如何在命令行下上网??????
  7. 大学生计算机大赛微电影,厦门理工学子微电影作品获全国大学生计算机大赛一等奖...
  8. Microsoft Store 里的一个倒数定时器软件 - Free Countdown Timer
  9. 卷起来了!Android OpenGL仿自如APP裸眼3D效果
  10. mPEG-FA 甲氧基PEGys