浅谈JAVA快速排序

简介: 快速排序是一种常用的排序算法,其时间复杂度为 O(n)。它的基本思路是通过分治的方式将一个大问题分解成若干个小问题,再通过递归的方式将小问题解决,最终将所有小问题的解合并起来得到大问题的解。下面我们来看一下 Java 快速排序的实现步骤和示例代码

介绍

快速排序是一种常用的排序算法,其时间复杂度为 O(n)。它的基本思路是通过分治的方式将一个大问题分解成若干个小问题,再通过递归的方式将小问题解决,最终将所有小问题的解合并起来得到大问题的解。下面我们来看一下 Java 快速排序的实现步骤和示例代码。

实现步骤

Java 快速排序的实现步骤如下:

  1. 选取一个基准元素(pivot),一般选择第一个元素或最后一个元素。
  2. 将序列中小于基准元素的元素放在基准元素的左边,大于基准元素的元素放在基准元素的右边。这个过程称为分区(partition)。
  3. 对左右两个分区分别递归地进行步骤 1 和步骤 2,直到分区中只有一个元素或者为空。

示例代码

下面是 Java 快速排序的示例代码:

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

private static int partition(int[] arr, int left, int right) {
   
    int pivot = arr[left];
    int i = left + 1;
    int j = right;
    while (i <= j) {
   
        while (i <= j && arr[i] <= pivot) {
   
            i++;
        }
        while (i <= j && arr[j] > pivot) {
   
            j--;
        }
        if (i < j) {
   
            swap(arr, i, j);
        }
    }
    swap(arr, left, j);
    return j;
}

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

优缺点

Java 快速排序的优点有:

  • 时间复杂度为 O(n),效率较高。
  • 对于大规模数据排序表现良好。

Java 快速排序的缺点有:

  • 对于小规模数据排序效率较低,因为递归的层数较多。
  • 对于近乎有序的数据排序效率较低,因为分区不均衡。
相关文章
|
搜索推荐 Java
【Java】快速排序
【Java】快速排序
95 0
|
搜索推荐 Java
Java递归思想与快速排序
Java递归思想与快速排序
75 0
|
3月前
|
搜索推荐 Java 索引
|
5月前
|
搜索推荐 算法 Java
Java中的快速排序、归并排序和堆排序是常见的排序算法。
【6月更文挑战第21天】Java中的快速排序、归并排序和堆排序是常见的排序算法。快速排序采用分治,以基准元素划分数组并递归排序;归并排序同样分治,先分割再合并有序子数组;堆排序通过构建堆来排序,保持堆性质并交换堆顶元素。每种算法各有优劣:快排平均高效,最坏O(n²);归并稳定O(n log n)但需额外空间;堆排序O(n log n)且原地排序,但不稳定。
46 3
|
5月前
|
Java
快速排序(java)
快速排序(java)
|
5月前
|
Java
快速排序-Java版本
快速排序-Java版本
25 0
|
6月前
|
算法 Java
<八大排序>万字详解(Java实现).插入排序、希尔排序、堆排序、快速排序、归并排序、计数排序...
<八大排序>万字详解(Java实现).插入排序、希尔排序、堆排序、快速排序、归并排序、计数排序
29 0
|
6月前
|
搜索推荐 Java
Java基础(快速排序算法)
Java基础(快速排序算法)
43 4
|
6月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序
|
6月前
|
搜索推荐 算法 Java
Java实现快速排序
Java实现快速排序
34 0