自闭症康复网,内容丰富有趣,生活中的好帮手!
自闭症康复网 > 排序算法 冒泡排序 插入排序

排序算法 冒泡排序 插入排序

时间:2022-09-16 18:00:12

相关推荐

排序算法 冒泡排序 插入排序

优化版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));

}

如果觉得《排序算法 冒泡排序 插入排序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。