Java简单快速排序实例解析
快速排序是一种常用的排序算法,其本质是通过不断地把数列分成两个部分,分别进行递归排序,最终完成整个数列的排序。
实现思路
快速排序的实现思路如下:
- 选择一个基准元素,在数列中选择一个数作为基准元素pivot,一般选择第一个或者最后一个元素;
- 分割数组,将数列中所有小于基准元素的数放在它的左侧,所有大于基准元素的数放在它的右侧;
- 递归排序左右数组。
代码实现
public class QuickSort {
public void sort(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
sort(arr, low, pivot - 1);
sort(arr, pivot + 1, high);
}
}
private int partition(int[] arr, int low, int high) {
int pivot = arr[low];
while (low < high) {
while (low < high && arr[high] >= pivot) {
high--;
}
arr[low] = arr[high];
while (low < high && arr[low] <= pivot) {
low++;
}
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
}
在这段代码中,sort方法是快速排序的入口方法,接收需要排序的数组,以及数组的起始坐标和终止坐标作为参数。partition方法是快速排序的核心方法,用于对数组进行分割。
使用示例
下面给出两个示例:
示例一
QuickSort quickSort = new QuickSort();
int[] arr = {6, 5, 3, 1, 8, 7, 2, 4};
quickSort.sort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
输出结果:
[1, 2, 3, 4, 5, 6, 7, 8]
示例二
QuickSort quickSort = new QuickSort();
int[] arr = {3, 9, 1, 4, 6, 8, 2, 5, 7};
quickSort.sort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
输出结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
总结
以上就是Java实现快速排序的完整攻略。在快速排序中,注意选取pivot的位置,以及分割数组的方式,可以对算法的效率产生重要的影响。在实际应用中,也可以通过优化算法的实现,来提高算法的效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java简单快速排序实例解析 - Python技术站