本文主要是介绍Java快速排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java快速排序
/**
* 快速排序
*
* @author yl
*/
public class QuickSort {
public static void main(String[] args) {
int[] array = {7, 6, 9, 3, 1, 5, 2, 4};
System.out.println(Arrays.toString(quickSort(array,0,array.length-1)));
}
/**
* 快速排序算法
* 参考:https://blog.csdn.net/morewindows/article/details/6684558、https://blog.csdn.net/shujuelin/article/details/82423852
* @param array
* @param left
* @param right
* @return
*/
public static int[] quickSort(int[] array,int left,int right) {
if (left>right){
return array;
}
// 将第一个数作为基准数
int baseNum = array[left];
// 左边数的下标
int leftIndex=left;
// 右边数的下标
int rightIndex=right;
while (leftIndex < rightIndex) {
// 从右边开始找第一个小于基准数的数的下标
while (leftIndex < rightIndex && array[rightIndex] >= baseNum) {
rightIndex--;
}
// 从左边开始找第一个大于基准数的数的下标
while (leftIndex < rightIndex && array[leftIndex] <= baseNum) {
leftIndex++;
}
// 将找到的数左右互换
if (leftIndex<rightIndex){
int temp=array[leftIndex];
array[leftIndex]=array[rightIndex];
array[rightIndex]=temp;
}
}
// 当左边下标等于右边下标时,将基准数和该下标对应数互换
array[left]=array[leftIndex];
array[leftIndex]=baseNum;
// 递归调用
quickSort(array,left,rightIndex-1);
quickSort(array,rightIndex+1,right);
return array;
}
}
这篇关于Java快速排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!