A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 开弓没有回头箭 中级黑马   /  2015-6-6 10:33  /  236 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.         public static void main(String args[]){
  2.                 //定义用于排序的数组
  3.                 int a[]={5,10,3,68,4,52,64,12};
  4.                 //调用冒泡排序方法
  5.                 bubbleSort(a);
  6.                 //打出排序后的数组
  7.                 System.out.println(Arrays.toString(a));
  8.         }
  9.         static void bubbleSort(int [] a){
  10.                 //获取数组长度
  11.                 int n = a.length;
  12.                 //定义boolean值,用于标识是否有交换行为发生过,发生过为true,否则为false
  13.                 boolean flag=true;
  14.                 //定义临时数用于交换数组中的数
  15.                 int temp;
  16.                
  17.                 for(int i=0;i<n;i++){
  18.                         if(flag==false){//是否出现交换,没有出现交换则排序已经完成
  19.                                 return;
  20.                         }
  21.                         flag=false;
  22.                         for(int j=n-1;j>i;j--){
  23.                                 if(a[j]<a[j-1]){
  24.                                         temp=a[j];
  25.                                         a[j]=a[j-1];
  26.                                         a[j-1]=temp;
  27.                                         flag=true;//出现交换,标签为真
  28.                                 }
  29.                         }
  30.                 }
复制代码


增加一个标签,每次循环判断是否有交换行为,如果没有,则说明排序已经完成,不需要下次循环,可减少循环次数,提高效率

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马