【练题记录】Java实现快速排序

  • 在十大经典排序算法中,快排的应用场景非常多,因此掌握快排的思想和实现是非常重要的。本文以将一个数组从小到大排序为例来讲解快排

十大经典排序算法比较

在这里插入图片描述

快排的基本流程

  • 1、选择一个中轴pivot
  • 2、将比pivot大的元素放到其右边
  • 3、将比pivot小的元素放到其左边
  • 4、分别对左右列表元素按照前三步进行递归
  • 5、递归的终止条件为元素列表的左下标≥右下标

代码实现

public class QuickSort {

    public static void main(String[] args) {
        int[] arrayToSort = {0, 5, 1, 2, 8, 9};
        quickSort(arrayToSort, 0, arrayToSort.length - 1);
        System.out.println(Arrays.toString(arrayToSort));
    }

    private static void quickSort(int[] arrayToSort, int L, int R) {
        if (L >= R) {
            return;
        }

        int left = L;
        int right = R;

        int pivot = arrayToSort[left];
        while (left < right) {
            while (left < right && arrayToSort[right] >= pivot) {
                right--;
            }
            if (left < right) {
                arrayToSort[left] = arrayToSort[right];
            }

            while (left < right && arrayToSort[left] <= pivot) {
                left++;
            }

            if (left < right) {
                arrayToSort[right] = arrayToSort[left];
            }
        }
        arrayToSort[left] = pivot;

        quickSort(arrayToSort, L, left - 1);
        quickSort(arrayToSort, right + 1, R);
    }
}
发布了45 篇原创文章 · 获赞 8 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/iNiegang/article/details/104126349