【算法】荷兰国旗

微信小程序 - 最新获取用户昵称 / 头像(wx.getUserProfile 接口被废弃后的代替方案)详细教程,2022 年之后的所有微信小程序,获取用户信息最新详细教程,附带示例源代码 微信小程序wx.getUserProfile接口废了用什么代替,微信小程序wx.getUserProfile不能用了怎么办,wx.getUserProfile失效有什么替代方案吗,微信新规定头像昵称填写最新教程,目前微信小程序最新获取用户头像昵称教程,微信小程序用户头像昵称获取规则调整公告,2022改版后的微信小程序如何获取用户头像和昵称信息,微信小程序官方废弃getUserProfile后如何实现获取用户信息,微信小程序wx.getUserProfile接口返回了默认头像昵称,微信小程序获取用户信息不 阅读详情

 1.问题描述:

  

我们将乱序的红白蓝三色小球排列成有序的红白蓝三色的同颜色在一起的小球组。这个问题之所以叫荷兰国旗,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。

 

2.问题分析:

这个问题我们可以将这个问题视为一个数组排序问题,这个数组分为前部,中部和后部三个部分,每一个元素(红白蓝分别对应0、1、2)必属于其中之一。由于红、白、蓝三色小球数量并不一定相同,所以这个三个区域不一定是等分的,也就是说如果我们将整个区域放在[0,1]的区域里,由于三色小球之间数量的比不同(此处假设1:2:2),可能前部为[0,0.2),中部为[0.2,0.6),后部为[0.6,1]。我们的思路如下:将前部和后部各排在数组的前边和后边,中部自然就排好了。具体的:

设置两个标志位begin和end分别指向这个数组的开始和末尾,然后用一个标志位current从头开始进行遍历:

1)若遍历到的位置为0,则说明它一定属于前部,于是就和begin位置进行交换,然后current向前进,begin也向前进(表示前边的已经都排好了)。

2)若遍历到的位置为1,则说明它一定属于中部,根据总思路,中部的我们都不动,然后current向前进。

3)若遍历到的位置为2,则说明它一定属于后部,于是就和end位置进行交换,由于交换完毕后current指向的可能是属于前部的,若此时current前进则会导致该位置不能被交换到前部,所以此时current不前进。而同1),end向后退1。

 

 

3.解决代码:

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/gnuhpc/archive/2011/02/25/6207285.aspx

相关推荐

IDEA+JRebel实现SpringBoot+MyBatis Plus项目热部署全攻略(含XML热更新实战)

本文详细介绍了如何在IDEA中使用JRebel为SpringBoot与MyBatis Plus项目配置高效的热部署方案。通过安装激活JRebel插件并配置关键扩展,重点解决了MyBatis XML映射文件修改后无法即时生效的痛点,实现了Java代码与XML文件的秒级热更新,从而彻底摆脱频繁重启应用的开发困境,大幅提升编码与调试效率。

weixin_28831341的博客 472

将字符串中的大小写字母放到数组里

public static void main(String[] args) { String str = " asda2adsf 1 adS12 DFASFSAD" + "F阿德斯防守对方asdfsadf37《?:?@%#¥%#¥%" + "@#$%#@$%^><?1234"; str = str.trim();//去除前后空格 str = str.replac...

hughjin 5537

Windows NPS与华为、华三、思科设备RADIUS认证实战指南

本文详细介绍了Windows NPS与华为、华三、思科设备RADIUS认证的实战配置指南。通过NPS服务器统一管理网络设备认证,实现企业级安全访问控制,涵盖基础配置、设备对接及故障排查方法,助力管理员提升网络安全管理效率。

weixin_29284201的博客 505

算法:荷兰国旗问题

荷兰国旗是由红白蓝3种颜色的条纹拼接而成,如下图所示: 假设这样的条纹有多条,且各种颜色的数量不一,并且随机组成了一个新的图形,新的图形可能如下图所示,但是绝非只有这一种情况: 需求是:把这些条纹按照颜色排好,红色的在上半部分,白色的在中间部分,蓝色的在下半部分,我们把这类问题称作荷兰国旗问题。 我们把荷兰国旗问题用数组的形式表达一下是这样的: 给定一个整数数组,给定一个值K,这个值在原数组中...

OceanStar的博客 3724

一文搞懂【Linux 搭建 Dread Hunger 服务器】附本体及Docker部署集群方案

看直播发现了五花八门的开服器和版本,一时兴起按官方文档进行了搭建尝试,所以我的版本基于官方Stream2024.01.10更新的版本,也就是停服时的玩法,应该可以根据mod和补丁魔改成更那些开服器一样的版本,本文不做谈论,注重服务器搭建,毕竟8个人不可能在一个局域网里乱象:首先,我看了大量教程视频,一类是开服器的推广,另一类自建的基本采用Windows搭建,我觉得最离谱的是大部分教程都会教你买一台远程Windows虚拟机???

LHmine的博客 3986

康耐视 VisionPro CogImageFileTool(将获得的图像保存至文件或从文件中获取图像)工具

VisionPro CogImageFileTool(将获得的图像保存至文件或从文件中获取图像)工具

zhihuishuxia__的博客 2063

算法:快速排序与荷兰国旗问题

文章目录荷兰国旗算法描述荷兰国旗代码展示快排算法描述快排代码展示 在聊快速排序之前,我们先解释一下荷兰国旗,即把一个数组分成三个部分,我们一般选最后一个元素作为基准值,即大于这个数的全部在左边,小于这个数的全部在右边,等于的在中间。 举个例子:arr{1,5,3,7,4,2,3,4},选取4做基准值,把他排成{1,3,2,3,4,4,7,5}大于小于区域的数顺序不要求。 荷兰国旗算法描述 首先第一步设less指针为-1,more指针为length-1。你可以想象成less是一个小于区域的右边界而more是大

m0_47268721的博客 1121

GT-suite v2016的下载和安装

1 写在前面 GT-suite 是一款用来做内燃机仿真的软件。在安装过程中遇到很多问题,网上的安装教程也大都抄来抄去,试着安装了几遍都没有成功。最终在贴吧一个老哥的帖子里找到了解决办法,但是老哥的帖子也不是很详细,所以做了这个详细版本的教程。 GT-suite v2016安装包: 链接:https://pan.baidu.com/s/1JZPgJ8_-J-L8rV84-eHedQ 提取码:uj...

kisssshot的博客 3万+

第二课:荷兰国旗问题,快速排序,堆排序,排序算法的稳定性,桶排序

左程云算法初级班 第二课 荷兰国旗问题 问题一 给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。 要求额外空间复杂度O(1),时间复杂度O(N) 问题二(荷兰国旗问题) 给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的 右边。 要求额外空间复杂度O(1),时间复...

欢迎来到【技术拾光者】,在这里,我们专注分享编程教程、技术趋势、实战案例和优质资源。不定期举办技术问答、专家访谈和职业指导。加入我们,共同探索技术世界,提升技能,拓展职业道路! 883

MWORKS 2025a电气模型库实战:手把手教你搭建全桥LLC电路(附避坑指南)

本文详细介绍了如何使用MWORKS 2025a电气模型库搭建全桥LLC电路,包括环境准备、电路拓扑构建、参数优化及故障诊断。通过实战案例和避坑指南,帮助电源工程师高效设计谐振转换器,提升转换效率至98%以上。文章特别强调了Modelica模型库在电气系统建模中的关键作用。

s8t9u0v1w的博客 603

二十一、CANdelaStudio深入-SPRMIB的配置

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的肯定响应抑制位配置,欢迎各位朋友订阅、评论,可以提出宝贵意见,以持续输出更好的作品,同时会根据评论、私信不定期更新文章内容,以及专栏目录。订阅该专栏的朋友可私信小编免费答疑解惑(^U^)ノ~YO CANdelaStudio-从入门到深入目录 文章目录CANdelaStu

诊断协议那些事儿's blog 1869

【算法习作】荷兰国旗问题

本文已搬家至【算法习作】荷兰国旗问题

gnuhpc的专栏 5521

基于jeecgboot3.9.0的项目管理——项目工作台(二)

基于jeecgboot3.9.0的项目管理——项目工作台(二)

宁波阿成的博客 206

荷兰国旗问题、矩阵相乘之Strassen算法

第四十一章~四十二章:荷兰国旗问题、矩阵相乘之Strassen算法 前言     本文要讲的两个问题:荷兰国旗和矩阵相乘之Strassen算法都跟分治法相关,故把这两个问题放到了一起。所谓分治,便是分而治之的意思,好比打战时面对敌人庞大的武装部队,采取避其主力,各个击破的策略。     有何问题,欢迎随时不吝指正,thanks。 第十一章

让软件普及到企业中去而奋斗终生 1916

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

算法之路_9、荷兰国旗问题

一、荷兰国旗问题(数组分割问题的扩展)  给定一个数组arr,和一个数num,请把小于num的数放在数组的 左边,等于num的数放在数组的中间,大于num的数放在数组的 右边。 要求额外空间复杂度O(1),时间复杂度O(N) 二、解释 通过具体问题可以看出,这是上一篇博文数组分割问题的扩展,上一篇是将小于等于的放在数组左边,大于放在数组右边,两份切。本篇荷兰国旗问题是小于数放左边,等于放中...

郭岚的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

算法-随机快排及荷兰国旗优化

随机快速排序和传统的快速排序的逻辑本质是一致的,都是找到一个值作为划分的中间位置,左边数值均小于该数值,右边数值均大于该数值,但是与传统的快排又不一致的是,我们的这个位置是通过随机获得的,对于随机行为的时间复杂度不能简单的按照最坏的情况解读随机快速排序算法随机快速排序的经典版本就是下面这样,随机出一个位置作为分界点,然后左右递归…我们下面的快排代码里面的 j 是作为左/右边界的越界位置存在 --> 随着下标指针的遍历(边界在不断地扩大)

2301_81486828的博客 1032

【算法】荷兰国旗问题

【算法】荷兰国旗问题题目思路代码 题目 给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)。 思路 num表示给定的数 L 用于正在遍历的元素的下标,初始值为0。 less 用于记录小于 num的区域的右下标,初始为-1,代表不存在。 more 用于记录大于 num区域的...

weixin_43389122的博客 566

荷兰国旗算法

逆序对:如果列表中左边的数比右边的大,称为逆序对 或者说右边的数比左边小 如果求相邻的那么直接遍历比较即可 如果不相邻也算,那么可以利用拆分排序(左边无序,右边有序(提高查询效率,二分法查等于他或者比他大一点数为位置)) 第一次拆为2个数组左边是从头到倒数第二位,末尾一个 第二次左边头到N-2,右边N-2和n-12个有序的 …第X次左边头到N-X,右边倒数的X个数字(N-X,N有序) 荷兰国旗: 一个数组arr,将大于num的放在右边,小于num的放在左边 实际上就是粗排序,声明2个临时数组,左边和右边,大

weixin_38848650的博客 272

荷兰国旗问题、快排以及BFPRT算法

荷兰国旗问题 给定一个数组arr,和一个数num,请把小于num的数放数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)。 这个问题的解决思路是这样的,首先划定一个小于区域,其右边界为less,划定一个大于区域,其左边界为more。从数组的第一个元素开始进行遍历,如果当前小于num,那么将这个数与小于区域外的第一个元素进行交换,并...

weixin_30641999的博客 170

算法:荷兰国旗

因为第三步中current指针所指元素与end指针所指元素交换之前,如果end指针之前指的元素是0,那么与current指针所指元素交换之后,current指针此刻所指的元素是0,此时,current指针能动么?通过前面的分析得知,这个问题类似快排中partition过程,只是需要用到三个指针:一个前指针begin,一个中指针current,一个后指针end,current指针遍历整个数组序列,当。current指针所指元素为2时,与end指针所指的元素交换,而后,current指针不动,end--。

金融科技和数据治理 703

[算法系列之十一]荷兰国旗问题

【问题】 现有红白蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起。这个问题之所以叫荷兰国旗问题,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。 【分析】 这个问题我们可以将这个问题视为一个数组排序问题。红白蓝分别对应数字0、1、2。红、白、蓝三色小球数量并不一定相同。 【思路一】 First, iterate the ...

Roger_CoderLife的博客 1584

【算法】基于荷兰国旗算法思想上的快速排序实现

【算法】基于荷兰国旗算法思想上的快速排序实现荷兰国旗快排思路代码 荷兰国旗 链接:荷兰国旗算法 荷兰国旗中的基准数是选定的,而这里快速排序我们默认每次的基准数都是最后一个数。 快排思路 基准数选定为最后一个数x L用于正在遍历的元素的下标,初始值为0,从左向右遍历,当L>=more时遍历结束。 less用于记录小于x的区域的最右边的下标,初始为-1,代表不存在。 more 用于记录大于 x区...

weixin_43389122的博客 400

荷兰国旗问题&快排&BFPRT算法

荷兰国旗问题 给定一个数组arr和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度为O(1),时间复杂度为O(N) 解决思路 初始化less=-1,more=len(arr),当前位置为cur=0。 如果arr[cur]<num,交换arr[cur]和arr[++less]的数,然后cur++ 如果arr[cur]>num,交换arr[cur]和arr[–more]的数,然后cur不变 如果当前位置上的数等于nu

god-jiang的博客 632

算法2 之荷兰国旗

最近真是一头扎进算法的大海里,愈发觉得“白头搔更短,浑欲不胜簪”。。而且!!我并没有觉得自己有毛线进步 それは難しいですね。でも、頑張るぞ。 最近看了一道荷兰国旗的题,发现csdn里关于此的博客还挺少,所以就决定发一篇,希望可以帮到和我一样上不了岸的小白。。 //荷兰国旗 等于num的数放中间,小于的放左边,大于的放右边 #include <stdio.h> int main (...

王高狮的博客 219

C++入门算法荷兰国旗

荷兰国旗说的其实是一个二分类问题,就是红、白双球分类,同类要挨着的问题 /* Note:Your choice is C IDE */ #include "stdio.h" #define MAX 100 //荷兰国旗 传数组 长度 void fun(int a[],int len) { int head=0,last=len-1,doing=0,t,i; while(doing<=last) { if(a[doing]==0) { t=a[doing]; a[doin

别人笑我太疯癫,我笑他人看不穿。 1299

荷兰国旗问题与快速排序算法

给定一个整数数组,给定一个值 K,这个值在原数组中一定存在,要求把数组中小于 K 的元素放到数组的左边,大于K的元素放到数组的右边,等于 K 的元素放到数组的中间。数组遍历完毕后,原始数组就形成了:小于 K 的元素放到数组的左边,大于 K 的元素放到数组的右边,等于 K 的元素放到数组的中间。表示都还没考察过数组的任何一个元素,然后开始遍历数组,遍历到的位置为。把每一种情况都列出来,会有每种情况下的时间复杂度,但概率都是。位置的值都是比 K 小的数,位置的值都是大于 K 的数。都是等于 K 的数,大于。

Practitioner 388
上一篇: 关于优快云博客注册老是提示错误的解决方法
下一篇: 【算法】找出两个已序数组,是否含有相同的数字
forestLight
博客等级 码龄15年 24粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值