首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 其他 > 荷兰为什么设置三色旗(那不是快速排序的前置知识吗)
荷兰为什么设置三色旗(那不是快速排序的前置知识吗)
更新时间:2024-07-04 01:30:56

#头条创作挑战赛#

前言

  这节学习一下荷兰旗问题,为学习快排打一个基础。

题意解析

  荷兰旗我还没见过呢?赶紧搜一下瞅瞅:

荷兰为什么设置三色旗(那不是快速排序的前置知识吗)1

  这就是荷兰旗,三色啊那啥叫荷兰旗问题呢,来个例子,我有一个数组arr,还有一个数X,数组中所有小于X的放数组左边,等于X的放数组中间,大于X的放数组右边,这就是荷兰旗问题。

图解思路

  造一个题呗,图来

荷兰为什么设置三色旗(那不是快速排序的前置知识吗)2

  暴力思路来一次

荷兰为什么设置三色旗(那不是快速排序的前置知识吗)3

  整理下:

  • 有个交换动作,来个swap
  • 我需要左边界L
  • 我需要右边界R
  • 考虑边界L>=R
❤️代码实现

  话不多说,贴上代码:

/** * arr[L...R] 玩荷兰国旗问题的划分,以arr[R]做划分值 <arr[R] ==arr[R] > arr[R] * * @param arr 数组 * @param L 左边界 * @param R 右边界 * @return 下标范围 */ public static int[] netherlandsFlag(int[] arr, int L, int R) { if (L > R) { // L...R L>R,不是有效范围 return new int[] { -1, -1 }; } if (L == R) { return new int[] { L, R }; } // 可以从初始位理解,刚开始的时候,左边界还没有右扩,所以less是L-1 int less = L - 1; // < 区 右边界 int more = R; // > 区 左边界 int index = L; // 当前数的位置,不能和 右区的左边界撞上 while (index < more) { if (arr[index] == arr[R]) {// 当前位置的数 和 目标数 相等的时候跳过 index ; } else if (arr[index] < arr[R]) {// 当前位置的数 小于 目标数 // 当前位置的数 和 L 1的数交换,然后位置右移,左边界右移 swap(arr, index , less); } else { // > // 当前位置的数 和 R-1的数交换,然后位置不变,右边界左移 swap(arr, index, --more); } } //more是右边界-1的位置,和R交换 swap(arr, more, R); // <[R] =[R] >[R] //等于区域的第一个数的位置,和等于区域的最后一个数的位置 return new int[] { less 1, more }; }

,
相关推荐RECOMMEND
每日坚果各种坚果比例(每日坚果营养究竟如何)
每日坚果各种坚果比例?据江苏公共·新闻频道《新闻360》报道:“每日坚果”是近年来零食界里出现的人气新星,它由坚果仁、风味果干为主要原材料,小小一包,方便携带食用,备受吃货追捧但市场上各种品牌的“每日...
餐饮业早餐现状(扎堆涌进万亿早餐市场)
餐饮业早餐现状?此前一直有说法认为,早餐市场是一座金矿,是餐饮业的蓝海陆续入局的连锁餐企,会成为早餐赛道的破局者吗?,接下来我们就来聊聊关于餐饮业早餐现状?以下内容大家不妨参考一二希望能帮到您!餐饮业...
极米投影仪全是红色光(极米投影仪H5预售火热)
最近,极米投影仪新出的一款极米H5被炒的很热,预售期间就获得了不少媒体和用户的关注。作为一款造势已久又有极米大牌光环加身的“新旗舰”,极米H5究竟值不值得买呢?这要看是别人买还是自己买?如果是别人买,...
五花肉这样煮甜香醇厚肥而不腻(五花肉和它是绝配)
特殊时期,这菜是宝贝!配五花肉焖一锅,满屋飘香,好吃停不下来!五花肉和它是绝配,简单炖一锅,香喷喷油滋滋,吃撑了还想再吃!对于上班族来说,工作日的每一天,真的是特别忙碌的;一大早起来就要准备早餐,午餐...
楼顶养鸡为何不生蛋(商丘一养鸡场惊现)
楼顶养鸡为何不生蛋?大河报·大河客户端记者陈海峰实习生陈曼,现在小编就来说说关于楼顶养鸡为何不生蛋?下面内容希望能帮助到你,我们来一起看看吧!楼顶养鸡为何不生蛋大河报·大河客户端记者陈海峰实习生陈曼7...
海娜纹身有毒吗(英国两男孩尝试海娜纹身致化学烧伤)
海娜纹身有毒吗?【环球网综合报道】据英国《独立报》8月6日报道,此前关于黑色指甲花纹身(又称海娜纹身)导致化学烧伤的案例已经有不少,近日海外又出现一起类似情况,受害者为两名儿童受伤儿童的母亲警告因此称...