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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何竹冬 中级黑马   /  2013-1-6 18:36  /  1753 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何竹冬 于 2013-1-6 20:07 编辑

我自己写的冒泡排序
  1. //冒泡排序
  2. public static void bubbleSort(String[] arr)
  3. {
  4. for(int i=arr.length-1;i>0;i--)//比较次数
  5. {
  6. for(int j=0,z=j+1;j<i;j++,z++)//相邻比较
  7. {
  8. if((arr[j].compareTo(arr[z]))>0)
  9. swap(arr,j,z);
  10. }
  11. }

  12. }
复制代码
毕向东老师的冒泡排序
  1. //冒泡排序
  2. public static void bubbleSort(String[] arr)
  3. {
  4. for(int i=0;i<arr.length-1;i++)
  5. {
  6. for(int j=0;j<arr.length-i-1;j++)
  7. {
  8. if((arr[j].compareTo(arr[j+1]))>0)
  9. swap(arr,j,j+1);
  10. }
  11. }

  12. }
复制代码
感觉毕向东老师的方法很简洁啊,谁能说一下区别,还有毕向东老师的冒泡排序第一个循环和第二个循环各控制什么?
我的第一个循环控制比较次数第二个循环相邻比较。

评分

参与人数 1技术分 +1 收起 理由
李培根 + 1

查看全部评分

5 个回复

倒序浏览
李培根 来自手机 金牌黑马 2013-1-6 18:45:41
沙发
手机上网,看不到代码。
毕老师冒泡排序外循环控制循环次数,内循环相邻比较,且外循环增加一次内循环比较减少一次
回复 使用道具 举报
本帖最后由 黑马刘杰 于 2013-1-6 19:41 编辑

毕老师的冒泡排序的外循环控制第几趟比较,内循环控制比较的次数
例如对5241排序
第一趟:
第一次、 2 5 4 1;第二次、2 4 5 1;第三次、2 4 1 5;  三次后最大值5“沉底”
第二趟:
第一次、2 4 1 5; 第二次、2 1 4 5; 两次后除5外剩下的最大值4“沉低”到5上面,当然不用和最低下的5比较啦,所以次数就减少一次
第三趟:
第一次、1 2 4 5 ;排序完成!
回复 使用道具 举报
多谢大家
回复 使用道具 举报
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

  冒泡排序算法的运作如下:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
这个是链接和详细的代码操作...
冒泡排序
回复 使用道具 举报
简单说,如果说从第一个元素比较到最后一个元素为“一趟”

那么 毕老师的 外循环控制的是 “趟数”(第几趟/次)

内循环是相邻元素比较
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马