概述
快速排序原理:快速排序实际上是采用二分法和递归的思想来实现数组排序。第一步是使用数组第一个数作为参考数,将数组按照大于或小于参考数分为两部分,再采用递归的方式对两部分进行同样操作,直到被拆分的部分只有一个数。
假设数组:5,8,7,3,6,2,9,1,4。采用快速排序算法的流程如下:
第一步:将第一个数5作为参考,将5从最后一位数开始逆序进行比较,直到找到小于5的数,交换两者位置,当比较到倒数第二位数,此时5大于1,交换位置。
接下来,从1开始找出大于5的元素,交换5与8的位置。
再从5与8之间找到小于5的数,交换位置,直到5的左边全部小于5,右边全部大于5。如下:
此时,已完成了5的排序,5的位置将不再变化。之后再用同样方式对5前面部分和后面部分进行操作。
以前面部分为例:对1,2,4,3进行排序。
由于1小于其他数,那么再次进行递归操作,对2,4,3进行排序,直到完成4,3排序。那么,前面部分的排序也就完成了。
实现代码:
public static int[] sort(int arr[], int start, int end) {
int pivot = arr[start];
int i = start;
int j = end;
while (i < j) {
while ((i < j) && (arr[j] > pivot)) {
j--;
}
while ((i < j) && (arr[i] < pivot)) {
i++;
}
if ((arr[i] == arr[j]) && (i < j)) {
i++;
} else {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
if (i - 1 > start)
arr = sort(arr, start, i - 1);
if (j + 1 < end)
arr = sort(arr, j + 1, end);
return arr;
}
测试:
public static void main(String[] args) {
int[] arr = new int[] {5,8,7,3,4,2,9,1,6};
arr = sort(arr, 0, arr.length - 1);
for(int i : arr) {
System.out.println(i);
}
}
输出结果:
最后
以上就是真实钢笔为你收集整理的java排序算法之快速排序的全部内容,希望文章能够帮你解决java排序算法之快速排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复