Java快速排序案例讲解
快速排序(Quicksort)是一种常见的排序算法,它的时间复杂度为O(nlogn),是一种效率较高的排序算法,在实际开发中也广泛应用。本文将介绍Java快速排序的实现过程以及具体实现。
快速排序介绍
快速排序是通过选择一个“基准数”,然后把整个数组分成两部分,分别为小于等于“基准数”的部分和大于“基准数”的部分。然后再对这两个部分分别进行快速排序,最终将它们拼接在一起形成一个有序的数组。
快速排序的实现过程
具体的Java快速排序实现过程如下:
-
选取基准数:使用数组中间的元素作为基准数,可以避免出现最坏情况。
-
分组:将数组分成两部分,小于等于基准数的放在左边,大于基准数的放在右边。
-
递归:对左右两组分别进行递归调用快速排序。
-
合并:合并左右两组。
Java快速排序的具体实现
Java快速排序的具体实现代码如下:
public static void quickSort(int left, int right, int[] nums) {
if (left >= right) {
return;
}
int l = left;
int r = right;
int pivot = nums[(left + right) / 2];
while (l <= r) {
while (nums[l] < pivot) {
l++;
}
while (nums[r] > pivot) {
r--;
}
if (l <= r) {
int temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
l++;
r--;
}
}
quickSort(left, r, nums);
quickSort(l, right, nums);
}
上述代码中,left表示数组左边界,right表示数组右边界,nums为待排序数组。首先判断左右边界是否相等,如果相等则退出递归。接着选取中间值作为基准数,使用双指针法将数组分为左右两部分,并将小于等于基准数的放在左边,大于基准数的放在右边。最后对左右两部分分别进行递归操作,直到递归结束。
快速排序的两个示例说明
示例一
假设数组为{5, 14, 3, 9, 17, 25},使用快速排序进行排序。
-
选取基准数:基准数为3。
-
分组:{3, 14, 5, 9, 17, 25}。
-
递归:对左右两组分别进行快速排序,左半部分{3, 5, 9},右半部分{14, 17, 25}。
-
合并:{3, 5, 9, 14, 17, 25}。
最终排序结果为{3, 5, 9, 14, 17, 25}。
示例二
假设数组为{89, 29, 10, 20, 80, 60, 15, 35, 25},使用快速排序进行排序。
-
选取基准数:基准数为60。
-
分组:{29, 10, 20, 15, 35, 25, 89, 80, 60}。
-
递归:对左右两组分别进行快速排序,左半部分{29, 10, 20, 15, 35, 25},右半部分{89, 80, 60}。
-
分组:左半部分{10, 20, 15, 35, 25, 29},右半部分{60, 80, 89}。
-
递归:对左右两组分别进行快速排序,左半部分{10, 15, 20, 25, 29, 35},右半部分{60, 80, 89}。
-
分组:左半部分和右半部分都只有一个元素,不需要继续分组。
-
合并:{10, 15, 20, 25, 29, 35, 60, 80, 89}。
最终排序结果为{10, 15, 20, 25, 29, 35, 60, 80, 89}。
总结
本文介绍了Java快速排序的实现过程及其代码实现,同时给出了两个具体的示例解释。快速排序是一种高效的排序算法,对于大数据量的排序是非常有用的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java快速排序案例讲解 - Python技术站