java实现的快速排序小示例
Posted Neo_Gamer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现的快速排序小示例相关的知识,希望对你有一定的参考价值。
写了个快速排序,结果是正确的,达到预期,请各路朋友指教。
/**
* 快速排序示例,先选定基准值,比基准值大的放在右边,比基准值小的在左边
* 右边先比较,再左边比较,再右边比较,再左边比较......
*
* @author x_wq
* @date 2021/11/11 14:47
*/
public class QuickSortDemo {
public static void main(String[] args) {
int[] array = {12, 7, 20, 13, 34, 9, 18, 25, 6};
quick(array, 0, array.length - 1);
System.out.println(Arrays.toString(array));
}
private static void quick(int[] array, int start, int end) {
int tmp = array[start];
int tmpIndex = 0;
int left = start;
int right = end;
while (left < right) {
// 右边遍历
while (array[right] >= tmp && right > left) {
right --;
}
array[left ++] = array[right];
if (right == left - 1) {
tmpIndex = right;
break;
}
// 左边遍历
while (array[left] <= tmp && left < right) {
left ++;
}
array[right --] = array[left];
if (left == right + 1) {
tmpIndex = left;
break;
}
}
array[tmpIndex] = tmp;
// 以当前基准值将数组分成两部分,继续循环
int leftIndex = tmpIndex - 1;
int rightIndex = tmpIndex + 1;
if (leftIndex > 0 && leftIndex > start) {
quick(array, start, leftIndex);
}
if (rightIndex < array.length - 1 && rightIndex < end) {
quick(array, rightIndex, end);
}
}
}
以上是关于java实现的快速排序小示例的主要内容,如果未能解决你的问题,请参考以下文章