wtf?java的冒泡排序还可以这样写

阅读 46

2023-12-05


举个栗子:将5,1,9,10,20,55,0,66进行小大排序
用一个数组存储这些数据,两个for循环进行比较
1.
第一趟:5和66比较,66大放位置不变
第二趟:5和0比较,5大交换位置变成了0,1,9,10,20,55,5,66
第三趟:0和55比较,位置不变
……
变成0,1,9,10,20,55,5,66
2…
第一趟:1和66比较,位置不变
……
很简单看下面的代码一目了然

package com.moshang;
public class Bumble {
	int a[];
	public Bumble(int a[]){
		this.a=a;
		int temp;
		for(int i=a.length-1;i>0;i--){
			@SuppressWarnings("unused")
			boolean flag=false;
			for(int j=1;j<=i;j++){
				if(a[j-1]>a[j]){
					temp=a[j-1];
					a[j-1]=a[j];
					a[j]=temp;
					flag=true;
				}
				if(flag=false){return;}
			}
		}

	}
	void show(){		
		for(int k=0;k<a.length;k++){
		System.out.print(a[k]+" ");
		}
}
	public static void main(String[] args) {
		int a[]={5,1,9,10,20,55,0,66};
		Bumble b=new Bumble(a);
		b.show();
	}
}

定义一个flag用来优化算法,如果是1,2,3,4,5,6的有序只需要O(1)的时间复杂度能排列出来,效率高

ok我们来运行一下,没问题!

wtf?java的冒泡排序还可以这样写_for循环


精彩评论(0)

0 0 举报