打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
排序算法 冒泡排序 插入排序

优化版2:

优化部分是,旧版每次比前1个小的时候都要交换值1次。优化之后,先把当前值存变量,让它和前一个比较,比它大就往后挪,直到不符合条件,就跳出循环,把它放在当前位置。

public void test0(){

int[] a = {9,3,1,4,6,8,7,5,2};

for(int i=1;i<a.length;i++){

int temp=a[i];

int j=i;

for(;j>0&&temp<a[j-1];j--){

a[j]=a[j-1];

}

a[j]=temp;

}

System.out.println(Arrays.toString(a));

}

优化版

注意:

    for(;j>0;j--){

                                    if(temp<a[j-1]){

a[j]=a[j-1];

                                    }

    }

这种写法和上面的在执行上有不一样的地方,因为插入排序,执行当前位置的时候,前面几个的顺序已经排好了,所以只要当前这个比前一个大的话第2层for循环就会停止。但如果把if语句写在里面,依然会继续执行,直到第a[1]a[0]比较完毕,第2层for循环才会停止。



原始版的插入排序:

public void test1(){

int[] a = {9,3,1,4,6,8,7,5,2};

for(int i=1;i<a.length;i++){

for(int j=i;j>0;j--){

if(a[j]<a[j-1]){

swap(a,j-1,j);

}

}

}

System.out.println(Arrays.toString(a));

}

public void swap(int[] arr,int i,int j){

int temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

优化版1:将if条件放进for循环的条件里,因为前面的顺序已经排好,只要比前1个大,就可以不用循环了,说明前面都是小的。

public void test1(){

int[] a = {9,3,1,4,6,8,7,5,2};

for(int i=1;i<a.length;i++){

for(int j=i;j>0 && a[j]<a[j-1];j--){

swap(a,j-1,j);

}

}

System.out.println(Arrays.toString(a));

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
堆排序,选择排序,冒泡排序
冒泡排序、插入排序、选择排序、希尔排序
Arrays 针对数组进行操作的工具类
Java中的Arrays类
java基础习题(四)
算法设计与分析 冒泡排序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服