当前位置: 首页 > news >正文

网站专业制作公司创建网站免费注册

网站专业制作公司,创建网站免费注册,腾讯企业邮箱入口网页版,石家庄企业做网站朋友们,现在我出一个非常简单的问题,给你一个数组,把它进行处理,变成左边小,中间相等,右边大的一个数组,如何解决呢,这里涉及到一个基本方法叫分组,今天咱们不解决这个问…

朋友们,现在我出一个非常简单的问题,给你一个数组,把它进行处理,变成左边小,中间相等,右边大的一个数组,如何解决呢,这里涉及到一个基本方法叫分组,今天咱们不解决这个问题,只了解下,分组算法的基本思想。

代码很简洁,如下:

	public static int partition(int[] arr, int L, int R) {if (L > R) {return -1;}if (L == R) {return L;}int lessEqual = L - 1;int index = L;while (index < R) {if (arr[index] <= arr[R]) {swap(arr, index, ++lessEqual);}index++;}swap(arr, ++lessEqual, R);return lessEqual;}

分区操作的目标是将一个数组分成两部分,一部分包含所有小于或等于某个元素的值,另一部分包含所有大于该元素的值。这个元素一般称为“分区元素”或“基准元素”。

以下是代码的详细解释:

public static int partition(int[] arr, int L, int R) {if (L > R) {return -1;}if (L == R) {return L;}int lessEqual = L - 1; // 初始化小于等于分区元素的区域的边界int index = L;         // 初始化当前遍历的元素的索引,从左边界开始// 从左到右遍历数组,将小于等于分区元素的元素放在 lessEqual 区域while (index < R) {if (arr[index] <= arr[R]) {swap(arr, index, ++lessEqual); // 如果当前元素小于等于分区元素,将其与 lessEqual 区域的下一个元素交换位置}index++;}// 最后将分区元素与 lessEqual 区域的下一个元素交换位置,使分区元素位于正确的位置swap(arr, ++lessEqual, R);return lessEqual; // 返回分区元素的最终位置
}

示例:

让我们通过一个示例来演示这个分区操作。假设有一个数组 arr,内容如下:

arr = [7, 3, 9, 4, 6, 2, 8]

我们调用 partition(arr, 0, 6) 来分区这个数组,其中 L = 0 是左边界,R = 6 是右边界。这个示例的初始状态如下:

  • lessEqual 初始化为 L - 1 = -1,表示小于等于分区元素的区域为空。
  • index 初始化为 L = 0,从数组的左边开始遍历

分区操作的过程如下:

  1. index = 0,此时 arr[index] = 7,因为 7 <= 8(分区元素是最右边的元素),所以将 7arr[lessEqual + 1] 交换,lessEqual 变为 0。 结果:arr = [7, 3, 9, 4, 6, 2, 8]

  2. index = 1,此时 arr[index] = 3,因为 3 <= 8,所以将 3arr[lessEqual + 1] 交换,lessEqual 变为 1。 结果:arr = [7, 3, 9, 4, 6, 2, 8]

  3. index = 2,此时 arr[index] = 9,因为 9 > 8,不需要交换,index 继续向右移动。 结果:arr = [7, 3, 9, 4, 6, 2, 8]

  4. 依此类推,直到 index 移动到 6

  5. 最后,将分区元素 8arr[lessEqual + 1] 交换,即 8 移动到了正确的位置。 结果:arr = [7, 3, 4, 6, 2, 8, 9]

分区操作结束,lessEqual 的值表示分区元素 8 的最终位置。在这个示例中,lessEqual 的值为 5,即分区元素 8 最终位于索引 5 的位置。

这就完成了一次分区操作,将数组分为两部分:左边是小于等于 8 的元素,右边是大于 8 的元素。

总结

上面主要是讲了荷兰国旗问题的一个小分支,这属于核心算法,具体如何实现整体的,大家可以自行查阅,其实这个算法可以自己去算一算,如果用一句话总结的话就是:给一个数组,最右侧的R是默认要划分的边界值,lessEqual记录小于等于R的最右侧边界索引,最后把R放到lessEqual的未知,再返回lessEqual的index。

http://www.hkea.cn/news/239946/

相关文章:

  • table表格 做的网站营销案例分析报告模板
  • pc端网站做移动适配教育培训机构管理系统
  • 页游传奇排行榜无锡seo优化公司
  • 广西南宁网站设计百度seo算法
  • 网站建设服务怎么样近期国内热点新闻事件
  • 阿里巴巴网站国际站建设seo托管服务
  • 企业网站优化之如何做需求分析网奇seo赚钱培训
  • 施工企业会计制度收入确认规定百度自然排名优化
  • 校园网站建设意义网络营销的特点有哪些
  • 内江做网站哪里便宜google搜索关键词热度
  • 福建省建设银行招聘网站网络推广员压力大吗
  • 动态网站订单怎么做搜索引擎优化营销
  • html5行业网站最近有哪些新闻
  • 做网站业务的怎么寻找客户在哪里打广告效果最好
  • 广东深圳seo服务内容
  • 做网站怎么备案网络服务有限公司
  • 网站主页特效欣赏百度官网下载电脑版
  • php mysql开发网站开发任何小说都能搜到的软件
  • the7 wordpress主题宁波seo外包费用
  • 云南建筑培训网seo刷点击软件
  • 男女做暖网站h5页面制作平台
  • 可以做puzzle的网站百度关键词排名提升工具
  • 竞网网站建设南宁网站seo大概多少钱
  • 114黄页信息网宝鸡seo培训
  • 东南亚做棋牌网站挖掘爱站网
  • 中国工程建设招标网官方网站谷歌查询关键词的工具叫什么
  • wordpress管理员密码忘记成都seo招聘
  • 武汉企业建站系统模板下载官方正版百度
  • 上海做网站国际财经新闻
  • 用废旧盒子做家用物品网站seo排名工具