java 冒泡排序的实现以及优化
}
package zks;
public class Main {
public static void main(String args[]){
int[] arr = {1,1,2,0,9 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 ,33,21,7,13,3,35,65,22};
BubbleSort.Bubble(arr, arr.length);
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
}
}
输出结果如下:
![](https://img-blog.csdn.net/20180606175516673?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3prc180ODI2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/7 Java 开源项目【ali1024.coding.net/public/P7/Java/git】 0)
上面这个是最基本的冒泡排序方法,如果说数组数量比较大并且有一部分是本来就有序的,那么将会在此部分浪费时间。所有考虑到这种情况,可以事先设置一个标识 flag,如果此次循化下来发生了交换,则为 true,否则说明排序已完成,为 false。
代码如下:
package zks;
public class BubbleSort {
public static void Bubble2(int a[],int n){
int j, k = n;
boolean flag = true;//发生了交换就为 true, 没发生就为 false
while (flag){
flag=false;//每次开始排序前,都设置 flag 为未排序过
for(j=1; j<k; j++){
if(a[j-1] > a[j]){
int temp;
temp = a[j-1];
a[j-1] = a[j];
a[j]=temp;
//表示交换过数据;
flag = true;
}
}
k--;//减小一次排序的尾边界
}
}
}
结果如下:
在此优化的基础上考虑到,如果有一个包含 500 个数值的数组,前 100 个是无序的,后 400 个全部是有序排列好的并且后面的 400 个数值的最低值都大于前 100 个的最高值。如果用第二种方法的话,虽然也是只会比较 100 次,但是每一次都会与后面 400 位相比较,而用下面的方法只需要与后面 400 位比较一次,便会记录下这个标识然后设置尾边界,以后的 99 次便不会与后面 400 相比较
再次优化后代码如下:
最后
既已说到 spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?
就个人而言,对于整个微服务架构,像 RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh 等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。
如果觉得图片不够清晰,也可来找小编分享原件的 xmind 文档!
且除此份微服务体系大纲外,我也有整理与其每个专题核心知识点对应的最强学习笔记:
出神入化——SpringCloudAlibaba.pdf
SpringCloud 微服务架构笔记(一).pdf
SpringCloud 微服务架构笔记(二).pdf
SpringCloud 微服务架构笔记(三).pdf
SpringCloud 微服务架构笔记(四).pdf
Dubbo 框架 RPC 实现原理.pdf
Dubbo 最新全面深度解读.pdf
Spring Boot 学习教程.pdf
SpringBoo 核心宝典.pdf
第一本 Docker 书-完整版.pdf
使用 SpringCloud 和 Docker 实战微服务.pdf
K8S(kubernetes)学习指南.pdf
另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的 xmind 文件,全部的源文件也都在此!
评论