美文网首页
快速排序 --- Java版

快速排序 --- Java版

作者: Skymiles | 来源:发表于2020-03-01 15:10 被阅读0次

算法思路

步骤.png
  1. 确定pivot分界点
  2. 定义两个左右指针i,j分别指向arr[0]和arr[len - 1], 然后比较和pivot大小,最终达到的效果是左边是<=x的部分,
    右边是>=x的部分(注意,不一定是等分)
  3. 递归同样求解左右两个子段

算法实现

public class QuickSort {

    public static Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        // 将输入数据进行初始化
        int n = in.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = in.nextInt();
        }
        // 进行快速排序
        quickSort(nums, 0, n - 1);
        
    }

    private static void quickSort(int[] nums, int l, int r) {
        if (l >= r) {
            return;
        }

        int pivot = nums[l], i = l - 1, j = r + 1;
        while (i < j) {
            do {
                i++;
            } while (nums[i] < pivot);

            do {
                j--;
            } while (nums[j] > pivot);

            // 指针没有相遇
            if (i < j) {
                swap(nums, i, j);
            }
        }

        quickSort(nums, l , j);
        quickSort(nums, j + 1, r);
    }

    private static void swap(int[] nums, int i, int j) {
        int t = nums[i];
        nums[i] = nums[j];
        nums[j] = t;
    }

}

相关文章

  • 快速排序

    手写java版快速排序算法实现

  • Javascript快速排序

    快速排序大众版 快速排序成人版

  • 快速排序(Java版)

    快速排序的原理是选出一个元素A,并将该元素与其他未排序的元素进行比较,把值比A小的元素放在A的左边,把值把A元素大...

  • 快速排序 --- Java版

    算法思路 确定pivot分界点 定义两个左右指针i,j分别指向arr[0]和arr[len - 1], 然后比较和...

  • 快速排序 --- 基础实践篇

    本篇主要介绍快速排序的基本代码。 大纲 普通版的快速排序 改进版的快速排序 快速排序应用----求前K个最大的数 ...

  • 快速排序

    快速排序Java实现

  • java排序方法资料

    java排序,效率高的是哪种排序方法 JAVA快速排序(高效) java中常用的几种排序算法 相关代码: /* *...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 面试知识点

    排序冒泡排序快速排序选择排序插入排序二路归并 查找二分查找 排序和查找的java实现 java语言Java字符串字...

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

网友评论

      本文标题:快速排序 --- Java版

      本文链接:https://www.haomeiwen.com/subject/epaqkhtx.html