Java编程入门与应用 P192 例7-25——快速排序法(非完全书上,而是更具书上思想自编写)
程序入口:
java">/**
* Java编程入门与应用 P192 例7-25——快速排序法(非完全书上,而是更具书上思想自编写)
*/
public class quick_sort {
//定义一个算法类
public static void main(String[] args) {
//定义初始数组
int[] number = {13, 15, 24, 99, 14, 11, 1, 2, 3};
//排序前
System.out.print("排序前:");
for(int i : number){
System.out.print(i + " ");
}
//使用用户定义的算法类中的快速排序法
algorithm.quickSort(number);
//输出排序后的数组数据
System.out.print("\n排序后:");
for(int j : number){
System.out.print(j + " ");
}
}
}
java">public class algorithm {
//快速排序方法
public static void quickSort(int[] array) {
//判断是否为空
if (array.length > 0) {
//需要排序的数组有值,则进行快速排序的算法阶段
quickSort_arithmetic(array, 0, array.length - 1);
}
}
//快速排序算法的执行
private static void quickSort_arithmetic(int[] array, int low, int height) {
//递归需要个退出条件
if (low < height) {
//获取中间键
int middle = get_quickSortMiddle(array, low, height);
//将中轴左边的数据进行相同操作
quickSort_arithmetic(array, low, middle - 1);
//将中轴右边的数据进行相同的操作
quickSort_arithmetic(array, middle + 1, height);
}
}
//快速排序的获取中间键算法
private static int get_quickSortMiddle(int[] array, int low, int height) {
//设数组第一个数为中轴
int temp = array[low];
//持续判断中间键是否获取结束
while (low < height) {
//判断当前最大值应该在中轴的什么范围,如果当前值大于中轴
while(low < height && array[height] >= temp){
height--;
}
//要是当前值大于了中轴,交换位置
exchange_value(array, low, height);
//判断当前最小值应该在中轴的什么范围,如果当前值小于中轴
while (low < height && array[low] <= temp) {
low++;
}
//要是当前值小于了中轴,交换位置
exchange_value(array, low, height);
}
//退出循环了表示当前low和height都指向了中轴,返回中轴
return low;
}
//交换中轴两边的数据
private static void exchange_value(int[] array, int low, int height) {
//交换数据
int temp = array[low];
array[low] = array[height];
array[height] = temp;
}
}
结果:
java">排序前:13 15 24 99 14 11 1 2 3
排序后:1 2 3 11 13 14 15 24 99
进程已结束,退出代码为 0
感谢观看
再次感谢~