Java 示例代码,它演示了如何使用 Java 实现快速排序算法

2023-10-26

public class QuickSort {

    public static void quickSort(int[] arr, int left, int right) {
        if (left < right) {
            int pivotIndex = partition(arr, left, right);
            quickSort(arr, left, pivotIndex - 1);
            quickSort(arr, pivotIndex + 1, right);
        }
    }

    private static int partition(int[] arr, int left, int right) {
        int pivotIndex = left;
        int pivotValue = arr[left];
        for (int i = left + 1; i <= right; i++) {
            if (arr[i] < pivotValue) {
                pivotIndex++;
                swap(arr, pivotIndex, i);
            }
        }
        swap(arr, left, pivotIndex);
        return pivotIndex;
    }

    private 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 = { 5, 3, 8, 4, 2 };
        quickSort(arr, 0, arr.length - 1);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

在上面的代码中,我们定义了一个名为 QuickSort 的类,并实现了快速排序算法。我们的 quickSort 方法采用三个参数:要排序的数组,左边的索引和右边的索引。如果左边的索引小于右边的索引,我们将数组分为两个部分,并将较小的部分递归地排序。

我们使用 partition 方法将数组分为两个部分。这个方法采用三个参数:要排序的数组,左边的索引和右边的索引。我们选择第一个元素作为枢轴,并将其称为 pivotValue。我们将枢轴元素移到正确的位置,并将小于枢轴值的元素放在左边,大于枢轴值的元素放在右边。

最后,我们使用 swap 方法交换数组中的两个元素。我们在 main 方法中创建一个数组,并对其进行排序。然后,我们打印排序后的数组元素。

要运行此代码,您只需将代码保存在名为 QuickSort.java 的文件中,打开终端并进入包含该文件的目录,然后编译该文件:

javac QuickSort.java
 

然后,您可以运行该应用程序:

java QuickSort


java QuickSort
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 示例代码,它演示了如何使用 Java 实现快速排序算法 的相关文章

随机推荐

  • Java实现百度云vin识别接口代码

    本文是service调用shibie方法 controller略 public class ImagesService public static String getResult String otherHost https aip ba
  • Cesium--一些实验过程中的效果记录

    1 一种反射效果 片元着色器代码 fragmentShaderSource in vec3 v positionMC in vec3 v positionEC in vec2 v st void main czm materialInput
  • 苹果电脑如何同时运行Mac和Windows--pd18

    如何同时运行Mac和Windows呢 这里为大家推荐pd18 全名Parallels Desktop 18虚拟机 是很火爆的一款软件 可以在Mac上无缝衔接Windows系统 并且不用重启 可以同时运行 设置不同的桌面 两指手势 滑动就可以
  • 判定通视的计算法公式_测量学简答题(5篇范例)

    计算改正后的导线边的坐标增量 推算未知点的平面坐标 8 水准测量时为什么要求前后视距相等 水准仪视准轴不平行于管水准器轴之差称为i角 当每站的前后视距相等时 i角对前后视读数的影响大小相等 符号相同 计算高差时可以抵消 9 视差是如何产生的
  • 服务器名称显示空,服务器名称为空

    服务器名称为空 内容精选 换一换 当您想要通过华为云的云解析服务为您的邮箱服务器提供解析服务 可以参考本操作为域名配置邮箱解析 例如 搭建一个邮箱服务器 如果要实现通过mail example com登录邮箱 并使用域名作为SMTP IMA
  • javascript中各种数据类型比较及类型转换

    前言 Js中的数据类型可以分为Js中的数据类型可以分为原始值和引用值两大类 原始值存储在栈内存中 引用值存储在堆内存中 栈内存中会保存应用值的指针以供调用 属于原始值的数据类型有 number string undefined boolea
  • UE4平滑视角缩放

    Tick接Interp函数 用来做一个平滑过渡的值 这个值代表了一个从当前值到目标值的过渡 然后还有速度 当前值就是Target Arm Length 目标值新建一个变量 值和默认的Target Arm Length一样 下面滚轮事件 改I
  • Jenkins可持续集成_序:为什么要学习持续集成?

    阅读须知 上传的是图片 要看清楚请点击图片放大查看 版权声明 本图片来自于网络 如果涉及侵权问题 请及时联系本人删除 其他声明 本文章严禁转载 转载于 https blog 51cto com wangxiaoke 2367404
  • steam服务器连接不稳定WIN10,小编操作win10系统steam连接不稳的解决步骤

    我们的电脑都安装的是windows系统来进行办公或者娱乐 有时候会遇到一些比如win10系统steam连接不稳的问题 我们通过调查发现不少用户都碰到了win10系统steam连接不稳的问题 如果你现在找不到专业的人员来解决win10系统st
  • Android Studio 中Intel HAXM安装与模拟器创建

    Intel HAXM Hardware Accelerated Execution Manager 使用基于 Intel R Virtualization Technology VT 的硬件加速 因此需要 CPU 支持 VT 而且仅限于 I
  • C语言算法--快速排序法

    C语言算法 快速排序法 1 什么是快速排序法 快速排序 Quicksort 是一种常用的排序算法 它基于分治的思想 它的核心思想是选择一个基准元素 将数组划分为两个子数组 使得左边的子数组中的所有元素都小于等于基准元素 右边的子数组中的所有
  • 网络层IP协议

    一 IP协议的报文格式 1 4位版本号 目前只有IPv4和IPv6两个版本 所以这里只能填4或6 2 4位首部长度 4个bit能表示的最大数字是15 而这里的单位是4个字节 所以首部长度最大为15 4 60个字节 3 8位服务类型 8位服务
  • drawio 二次开发

    目的 使用drawIO 进行绘图 然后保存的时候 存到MySQL 下次打开的时候 可以遍历MySQL的所有文件 点击指定文件 可以在新的画布上展示已有的绘图 step1 开发环境 默认使用tomcat 部署 改造成spring boot 部
  • 实现水平居中的几种方式

    一 利用定位 利用绝对定位 translate div width 100px height 100px background color aquamarine position absolute top 50 left 50 transf
  • 为什么在 2023 年只使用 console.log 是一个大禁忌

    这里有 5 个必须知道的控制台对象方法和技巧 在 2023 年 您是否仍在使用它console log来满足所有 JavaScript 调试需求 是时候提升您的技能并发现 JavaScript 控制台对象的全部功能了 从console ta
  • 遇到:ValueError: not enough values to unpack (expected 2, got 1) 错误应该如何解决

    遇到 ValueError not enough values to unpack expected 2 got 1 错误通常表示你在尝试解包 unpack 一个序列时 但是序列的元素数量不够 解包操作期望的元素数量与实际的元素数量不匹配
  • python-OpenCV图像图形检测(四)

    实例下载 图形检测 检测图形轮廓 边缘检测 轮廓拟合 一 简介 图形检测是计算机视觉的一项重要功能 通过图形检测可以分析图像中可能存在的形状 然后对这些形状进行描绘 例如 搜索并绘制图像的边缘 定位图像的位置 判断图像中有没有直线 有没有圆
  • C#

    System IO Pipelines 很酷的读写数据流方式 文章目录 System IO Pipelines 很酷的读写数据流方式 前言 System IO Pipelines 是啥 有什么优点 有哪些应用场景 网络编程 文件处理 怎么使
  • C语言代码练习第四天

    目录 1 将 1 100 的数据以 10x10 矩阵格式输出 2 等差数列输出 10x10 矩阵格式 3 乘法运算格式 4 简单计算器 5 判断一个数是否可以为两个素数之和 6 二进制转为十进制 7 十进制转为二进制 8 逆置字符串 9 逆
  • Java 示例代码,它演示了如何使用 Java 实现快速排序算法

    public class QuickSort public static void quickSort int arr int left int right if left lt right int pivotIndex partition