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

有重复元素的快速排序

当涉及到处理重复元素的快速排序时,可以使用荷兰国旗问题的方法,也就是三路划分。下面是使用 Java 实现的示例代码:

import java.util.Arrays;public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {int[] pivotIndices = partition(arr, low, high);quickSort(arr, low, pivotIndices[0] - 1);quickSort(arr, pivotIndices[1] + 1, high);}}public static int[] partition(int[] arr, int low, int high) {int pivot = arr[low];int smaller = low;int equal = low;int larger = high;while (equal <= larger) {if (arr[equal] < pivot) {swap(arr, smaller, equal);smaller++;equal++;} else if (arr[equal] == pivot) {equal++;} else {swap(arr, equal, larger);larger--;}}return new int[]{smaller, larger};}public static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void main(String[] args) {int[] arr = {3, 6, 8, 2, 3, 8, 4, 6, 3, 2};System.out.println("Original Array: " + Arrays.toString(arr));quickSort(arr, 0, arr.length - 1);System.out.println("Sorted Array: " + Arrays.toString(arr));}
}

这段代码实现了一个快速排序算法,其中的 quickSort 方法用于递归地进行排序,partition 方法用于进行三路划分(小于、等于和大于 pivot)。在 main 方法中,展示了如何使用这个快速排序算法对含有重复元素的数组进行排序。

运行此 Java 代码将对数组进行排序,并保持重复元素的相对顺序。

http://www.lryc.cn/news/234803.html

相关文章:

  • Bert浅谈
  • 产品运营的场景和运营策略
  • C#异常捕获try catch详细介绍
  • 切换阿里云ES方式及故障应急处理方案
  • CTFhub-RCE-过滤空格
  • 无需添加udid,ios企业证书的自助生成方法
  • 【PTA题目】6-20 使用函数判断完全平方数 分数 10
  • Nas搭建webdav服务器并同步Zotero科研文献
  • 一句话总结敏捷实践中不同方法
  • 【数据结构】线段树(点修区查)
  • Ansys Lumerical | 用于增强现实系统的表面浮雕光栅
  • QT day3作业
  • 【Ubuntu】设置永不息屏与安装 dconf-editor
  • gRPC 的原理 介绍带你从头了解gRPC
  • Apriori算法
  • 肖sir__linux讲解(2.1)
  • The ultimate UI kit and design system for Figma 组件库下载
  • Selenium——利用input标签上传文件
  • C++初阶 日期类的实现(下)
  • 大师学SwiftUI第16章 - UIKit框架集成
  • 7.docker运行redis容器
  • unity教程
  • 未定义与 ‘double‘ 类型的输入参数相对应的函数 ‘Link‘
  • 为什么Transformer模型中使用Layer Normalization(Layer Norm)而不是Batch Normalization(BN)
  • Vite - 配置 - 文件路径别名的配置
  • phpStorm Xdebug调试 加FireFox浏览器
  • 多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测
  • linux配置固定ip(两种方法)
  • 什么是缓存雪崩、击穿、穿透?
  • 可以通过电脑远程控制安卓设备的软件