java简单快速排序实例解析

Java简单快速排序实例解析

快速排序是一种常用的排序算法,其本质是通过不断地把数列分成两个部分,分别进行递归排序,最终完成整个数列的排序。

实现思路

快速排序的实现思路如下:

  1. 选择一个基准元素,在数列中选择一个数作为基准元素pivot,一般选择第一个或者最后一个元素;
  2. 分割数组,将数列中所有小于基准元素的数放在它的左侧,所有大于基准元素的数放在它的右侧;
  3. 递归排序左右数组。

代码实现

public class QuickSort {

    public void sort(int[] arr, int low, int high) {

        if (low < high) {
            int pivot = partition(arr, low, high);
            sort(arr, low, pivot - 1);
            sort(arr, pivot + 1, high);
        }
    }

    private int partition(int[] arr, int low, int high) {

        int pivot = arr[low];

        while (low < high) {

            while (low < high && arr[high] >= pivot) {
                high--;
            }
            arr[low] = arr[high];

            while (low < high && arr[low] <= pivot) {
                low++;
            }
            arr[high] = arr[low];
        }

        arr[low] = pivot;

        return low;
    }
}

在这段代码中,sort方法是快速排序的入口方法,接收需要排序的数组,以及数组的起始坐标和终止坐标作为参数。partition方法是快速排序的核心方法,用于对数组进行分割。

使用示例

下面给出两个示例:

示例一

QuickSort quickSort = new QuickSort();
int[] arr = {6, 5, 3, 1, 8, 7, 2, 4};
quickSort.sort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));

输出结果:

[1, 2, 3, 4, 5, 6, 7, 8]

示例二

QuickSort quickSort = new QuickSort();
int[] arr = {3, 9, 1, 4, 6, 8, 2, 5, 7};
quickSort.sort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));

输出结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

总结

以上就是Java实现快速排序的完整攻略。在快速排序中,注意选取pivot的位置,以及分割数组的方式,可以对算法的效率产生重要的影响。在实际应用中,也可以通过优化算法的实现,来提高算法的效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java简单快速排序实例解析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 超级全面的PHP面试题整理集合第1/2页

    下面是详细的攻略: 第1/2页页面介绍 这是一篇关于PHP面试题的文章,分成1/2页展示,第一页包含了50道PHP面试题,第二页包含了另外50道PHP面试题。对于准备面试的PHP开发人员来说是一份不错的复习资料。该页面的排版清晰简洁,每个问题答案都有详细的解释,更新时间较新,适合PHP初级和高级开发人员进行参考。 页面内容分析 该页面的内容主要由50道PHP…

    Java 2023年6月15日
    00
  • springboot的java配置方式(实例讲解)

    下面给出SpringBoot的Java配置方式的详细攻略: 1. 什么是Java配置方式? SpringBoot提供了三种配置方式:XML配置方式、注解配置方式和Java配置方式。Java配置方式是一种纯粹的编程式的方式,通过Java类的方式来完成Bean的配置,相比于XML和注解更加灵活。Java配置方式的主要思想就是用一个Java类替代了XML配置文件或…

    Java 2023年5月15日
    00
  • Java利用栈实现简易计算器功能

    为了实现Java利用栈实现简易计算器功能,我们可以使用栈来存储操作数和运算符,然后依次从左到右扫描表达式,并根据运算符的优先级进行计算。下面是具体的实现步骤: 1.将中缀表达式转换为后缀表达式 使用栈来转换中缀表达式为后缀表达式是比较常见的方法。具体步骤如下: 创建一个栈来保存运算符。 从左到右扫描中缀表达式。 如果当前扫描到的是操作数,则直接输出到后缀表达…

    Java 2023年5月19日
    00
  • java堆栈类使用实例(java中stack的使用方法)

    标题:Java堆栈类使用实例 堆栈概述 堆栈(Stack)是一种特殊的线性数据结构,它只允许在一端进行插入和删除操作。堆栈遵循先进后出(Last-In-First-Out)的原则,即最后插入的元素最先删除。 Java中提供了Stack类来实现堆栈,Stack类继承了Vector类,并添加了支持堆栈的方法。 Stack类的常用方法 Stack类提供了以下常用方…

    Java 2023年5月26日
    00
  • Java中的try-catch语句如何使用?

    当Java程序运行时发生异常,程序将会自动停止运行并抛出异常信息。为了避免程序因为异常而终止,可以使用Java中的try-catch语句来捕获异常并处理。 一、语法格式 try-catch语句的语法格式如下: try { // 可能会抛出异常的代码块 } catch (ExceptionType e) { // 捕获并处理异常的代码块 } try:被检测的代…

    Java 2023年4月27日
    00
  • Spring Boot常用注解(经典干货)

    下面是 Spring Boot 常用注解经典干货的完整攻略: 1. 常用注解 @SpringBootApplication @SpringBootApplication 组合注解充分发挥了 @Configuration、@EnableAutoConfiguration、@ComponentScan 的作用。其中,@EnableAutoConfiguratio…

    Java 2023年5月15日
    00
  • JAVA 时间区间的字符串合法性验证

    下面是“JAVA 时间区间的字符串合法性验证”的完整攻略: 背景 在Java中,时间区间通常由一个开始时间和一个结束时间组成,比如“2019-01-01 00:00:00”到“2019-01-01 23:59:59”这样的字符串格式。在实际开发中,我们需要对时间区间的字符串格式进行合法性验证,保证输入数据的有效性。本文将介绍一种简单有效的JAVA时间区间字符…

    Java 2023年5月20日
    00
  • java 如何为文件及文件夹添加权限

    为文件或文件夹添加权限是一个常见的操作,Java可以通过修改文件或文件夹的访问控制列表(ACL)来实现对文件或文件夹的权限控制。为文件或文件夹添加权限的步骤如下: Step 1:创建一个ACL对象 java.nio.file.attribute.AclFileAttributeView类可以用来管理文件或文件夹的ACL。使用Files.getFileAttr…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部