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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙玉伟 黑马帝   /  2012-1-16 10:09  /  1670 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

/*功能:用Java语言实现冒泡排序
*冒泡排序是稳定的。算法时间复杂度是O(n ^2)
*注:此为优化后的Java冒泡排序代码
*/
public class BubbleSort2 {
public void sort(int[] data){ //定义两个参数,数组首地址与数组大小
   int temp;
   for(int i=0;i<data.length;i++){ //冒泡,降序:
    for(int j=data.length-1;j>i;j--){
     if(data[i]<data[j]){ //每个数都比较n次,如果data[i]>data[j]成立,则交换两个数
        temp =data[i];
      data[i] = data[j];
      data[j] = temp;
     }
    /*以下是打印每一次排序后的序列,与算法无关*/
    for(int q=0;q<data.length;q++){
      System.out.print(data[q]+" "); //打印每一次排序后的序列
      }
    System.out.println(); //换行
    }
   
   }
}
public static void main(String[] args){
   BubbleSort2 bubbleSort2=new BubbleSort2();
   int[] a={4,2,3};
   for(int i=0;i<a.length;i++)
    System.out.print(a[i]+" ");
   System.out.println(" 降序排序");
   bubbleSort2.sort(a);
  
   System.out.println(" after sort:");
   for(int i=0;i<a.length;i++)
    System.out.print(a[i]+" ");
}
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
帮你加个标识
方便当数组有一部分已经是排好序的情况下退出循环,以提高效率;
我用伪代码(C语言)写下算法吧
  1. void BubbleSort(SeqList R){//R是待排序文件
  2.         int i ,j;
  3.         Boolean exchange;  //交换标志

  4.         for(i = 1;i < n;i++){
  5.         exchange = FALSE;
  6.                 for(j = n-1;j >= i;j--){
  7.                         if(R[j=1].key < R[j].key ){
  8.                                 R[0]=R[j+1];
  9.                                 R[j+1]=R[j];
  10.                                 R[j]=R[0];   //利用数组的R[0]来做交换临时区;
  11.                                 exchange = true;//发生了交换,故将交换标识置为真;
  12.                         }
  13.                 }
  14.         if(!exchange)
  15.                 return;
  16.                 }
  17.         }
复制代码
回复 使用道具 举报
if(!exchange)判断本趟排序没有发生交换,提前退出算法

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
我再贡献个我博客整理的常见排序算法http://blog.163.com/qianzhaoyuan@126/blog/static/102748225201201633241345/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马