您的位置:首页 > 编程语言 > Java开发

冒泡排序优化——Java实现

2018-07-27 20:17 323 查看
[code]

public class bubbleSort {
private int [] array;
public bubbleSort(int [] array) {
this.array=array;
}

public static void main(String[] args) {
int [] a= {3,5,2,8,0,4,7,29,11};
bubbleSort  bsort=new bubbleSort(a);
System.out.print("未排序时的数组: ");
bsort.display();
bsort.sort();

}

//打印每次排序后的数组元素
public void display() {
for(int i=0;i<array.length;i++) {
System.out.print(array[i]+"\t");
}
System.out.println();
}

//冒泡排序
public void sort() {
int temp;
int len=array.length;
for(int i=0;i<len-1;i++) {  		//每次循环,确定一个相对大的数
boolean flag=false;				//交换标志位
for(int j=1;j<len-i;j++) {   	//记录是第几次交换
if(array[j-1]>array[j]) {	//如果前者大于后者,开始交换
flag=true;				//发生交换
temp=array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
System.out.print("第"+(i+1)+"次排序结果:");
display();        				//输出交换后的结果
if(!flag) {						//如果没有发生交换,证明已经是有序的了,结束排序
break;
}
}
}

}

​

测试结果:

优化:因为冒泡排序算法简单但效率较低,所以加入交换标志位,避免在有序的情况下无意义的数组遍历。

注:在Java中类似于if(!flag),交换标志位数据类型一定为布尔型;

      在C中并没有明显的区分。

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: