快速排序
AI-摘要
WenXi GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
简介
快速排序(Quick Sort)是一种常用的排序算法,又是一种分而治之思想在排序算法上的典型应用。本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法。
它的基本思想是通过不断地划分数组,将小于某个基准值的元素放在基准值的左侧,大于基准值的元素放在基准值的右侧,然后对左右两侧的子数组分别进行快速排序。这个过程不断地递归执行,直到整个数组有序。
步骤
快速排序算法的基本步骤如下:
选择基准值(通常选择数组的第一个或最后一个元素)。
设定两个指针,一个指向数组的起始位置(一般称为 low),一个指向数组的结束位置(一般称为 high)。
从 high 开始,向前搜索,找到第一个小于等于基准值的元素,并将其与 low 指向的元素交换。
从 low 开始,向后搜索,找到第一个大于基准值的元素,并将其与 high 指向的元素交换。
重复步骤 3 和步骤 4,直到 low 和 high 相遇。
将基准值放到相遇位置,此时基准值左侧的元素都小于等于基准值,右侧的元素都大于基准值。
对基准值左侧的子数组和右侧的子数组分别递归执行上述步骤。
实战案例
下面是使用 Java 实现的快速排序算法的示例代码:
public class QuickSort {
public static void quickSort(int[] array) {
quickSort(array, 0, array.length - 1);
}
private static void quickSort(int[] array, int low, int high) {
if (low < high) {
int pivotIndex = partition(array, low, high);
quickSort(array, low, pivotIndex - 1);
quickSort(array, pivotIndex + 1, high);
}
}
private static int partition(int[] array, int low, int high) {
int pivot = array[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (array[j] <= pivot) {
i++;
swap(array, i, j);
}
}
swap(array, i + 1, high);
return i + 1;
}
private static void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
public static void main(String[] args) {
int[] array = {5, 2, 9, 1, 3, 7};
quickSort(array);
System.out.println(Arrays.toString(array));
}
这将输出 [1, 2, 3, 5, 7, 9]
,表示数组已经按照从小到大的顺序排序好了。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果