前言
LeetCode 2545题,我的思路是用冒泡排序,但是时间开销比较大,学习了一下更高效的算法:快速排序算法。
题解链接:
什么是快速排序
快速排序是一种基于分治思想的排序算法。其基本思想是选择一个基准值,然后将数组分成两部分:一部分小于基准值,一部分大于基准值。然后对这两部分进行递归排序。
快排的使用
- 选择基准值
- 分割数组
- 递归排序
关键:基准值的选择
下边是快速排序的基本模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class QuickSort { private void quickSort(int[] nums, int start, int end) { if (start < end) { int pivotIndex = partition(nums, start, end); quickSort(nums, start, pivotIndex - 1); quickSort(nums, privotIndex + 1, end); } }
private int partition(int[] nums, int start, int end) { }
private void swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } }
|