package bubble;


//相对于未优化的冒泡排序来说,优化后可以减少判断
//其原理是,如果在某次排序中,都已经交换了数组中的数据,说明数组仍需排序
//如果都已经不交换了,则已经有序,可以结束程序运行
public class BubbleYouhua {
public static void print(int[] arr){
for(int n=0;n<arr.length;n++){
System.out.print(arr[n]+" ");
}
System.out.println();
}

static void fun(int[] a){
int length = a.length;
boolean flag = true;//利用一个布尔型flag来实现判断是否已经交换
for(int i=0;i<length-1&&flag;i++){
flag = false;
//每次都把在n-i个中选择最大的,挪到最后
for(int j=1;j<length-i;j++){
if(a[j-1]>a[j]){
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
flag = true;
}
}
System.out.print("第"+(i+1)+"次:");
print(a);
}
}

public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9};
fun(arr);
}


}

更多相关文章

  1. Java中怎么把字符串数组转为整形数组
  2. 剑指Offer(六)旋转数组的最小数字(Java版 )
  3. Java中double型数组的HashCode产生
  4. 求助:json + java 返回 数据 数组中去掉双引号
  5. 了解数组类型和使用java.util.Arrays类
  6. java的数组下标的非常严重的问题,异常不爽
  7. java数组常用功能
  8. 对一个JavaScript对象数组进行排序。
  9. 求一段与读取数据库数据,写入一个数组的javascript 代码!谢谢!!

随机推荐

  1. 用c语言编写爱心的代码是什么
  2. c语言fun函数有什么作用
  3. C语言strcmp函数用法
  4. C语言怎么换行
  5. sqrt在c语言中怎么用
  6. 字符数组表示字符串的注意事项是什么
  7. C语言的特点与创建的基本步骤是什么
  8. 一个include命令可以指定多个被包含的文
  9. c语言如何求两个数的最大公约数
  10. 在switch语句中,case后的标号只能是什么?