在此示例中,我们将学习在Java中实现快速排序算法。
在学习Java中的快速排序算法之前,请确保您了解快速排序算法的工作原理。
//用Java快速排序
import java.util.Arrays;
class Main {
//根据数据轴划分数组
int partition(int array[], int low, int high) {
//选择最后一个元素作为轴
int pivot = array[high];
//初始化第二个指针
int i = (low - 1);
//把小于轴的元素放在左边
//大于枢轴右侧的枢轴
for (int j = low; j < high; j++) {
//将所有元素与pivot进行比较
//交换大于pivot的元素
//元素小于pivot
//按降序排序
// if (array[j] >= pivot)
if (array[j] <= pivot) {
//第二个指针递增。
//将较小的元素替换为较大的元素
i++;
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
//所以左边的元素更小
//右边的元素大于pivot
int temp = array[i + 1];
array[i + 1] = array[high];
array[high] = temp;
return (i + 1);
}
void quickSort(int array[], int low, int high) {
if (low < high) {
//选择轴位置并将所有元素放小
//左轴大于轴,右轴大于轴
int pi = partition(array, low, high);
//对轴左侧的元素进行排序
quickSort(array, low, pi - 1);
//对轴右侧的元素进行排序
quickSort(array, pi + 1, high);
}
}
public static void main(String args[]) {
//创建一个未排序的数组
int[] data = { 8, 7, 2, 1, 0, 9, 6 };
int size = data.length;
//创建Main类的对象
Main qs = new Main();
//将第一个和最后一个索引传递给数组
qs.quickSort(data, 0, size - 1);
System.out.println("排序数组: ");
System.out.println(Arrays.toString(data));
}
}输出1
未排序的数组: [8, 7, 2, 1, 0, 9, 6] 排序数组: [0, 1, 2, 6, 7, 8, 9]
在这里,数组的元素按升序排序。 如果我们想要按降序对元素进行排序,那么在Partition()方法的for循环中,我们可以将代码更改为:
//小于符号更改为大于
if (array[j] >= pivot) {