今天依旧老规矩,我们先来一段每日古典回顾,为生活增添一丝趣味,感受古人的毅力和智慧。
今日的古典回忆是:“谁能九层台,不用累土起!”
这句话出自唐代诗人王之涣的《登鹳雀楼》,这句诗的意思是,有谁能够建造一座九层高的楼台,却不是从堆积一层层的土开始的呢?
所以我们无论是在学习、工作还是生活的其他方面,都需要我们一步一个脚印,扎实地做好每一件事情,才能最终取得成功。
前两天的文章投票,我看到投“ so easy,毫无压力!”的较多,所以今天我们继续上点难度,回忆下用 Java 实现快速排序算法。
是不是看到这里小伙伴们有点熟悉呢。没错,前两天我们分析了 Java 实现冒泡排序算法。
有需要回忆的 Java 实现冒泡排序算法可以点击下方链接,直接跳转哦!
https://mp.weixin.qq.com/s/k5iKu6mdrdUtJFTmbGavhA
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
//将所有元素与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
//选择轴位置并将所有元素放小
//左轴大于轴,右轴大于轴
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));
}
}
运行该程序时,输出结果为:
未排序的数组:
[8, 7, 2, 1, 0, 9, 6]
排序数组:
[0, 1, 2, 6, 7, 8, 9]
在这里,数组的元素按升序排序。如果我们想要按降序对元素进行排序,那么在 Partition() 方法的 for 循环中,我们可以将代码更改为:
//小于符号更改为大于
if (array[j] >= pivot) {
今天的代码大赏到此结束,关于 Java 程序实现快速排序算法,你学会了吗?
欢迎在评论区留下自己的看法。
完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!
在线访问:https://www.codecopy.cn/post/plyxee
在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~