黑马程序员技术交流社区

标题: 黑马程序员_谭光洪_自己对于冒泡排序法的理解 [打印本页]

作者: FrancisTan    时间: 2014-7-4 18:50
标题: 黑马程序员_谭光洪_自己对于冒泡排序法的理解
本帖最后由 FrancisTan 于 2014-7-9 08:04 编辑

先贴出自己写的代码:
  1. void sort(int[] arr)
  2. {
  3.        for (int i = 0; i < arr.Length; i++)
  4.               for (int j = i+1; j < arr.Length; j++)
  5.               {
  6.                      if(arr[i] > arr[j])
  7.                      {
  8.                             int temp = a[i];
  9.                             a[i] = a[j];
  10.                             a[j] = temp;
  11.                      }
  12.               }
  13. }
复制代码



在方法sort中,两个for 循环就是在对数组arr进行冒泡排序,跟老师讲的有点不太一样,
但是这样写我觉得对于初学者来说比较好理解(因为老师讲的那种方法我用了很长时间才搞清楚)*_*()


我对于冒泡排序法的理解是找最大(小)值,每一次比对就是遍历数组找最大(小)值,然后将它放在数组
第一个位置,这样在循环结束后,数组就按照由大(小)到小(大)的顺序排好序了。

每次比对都将开始这个数及它后面所有数作为arr的一个子数组,
其中i用来遍历整个arr数组,确保数组中每个元素都对比到,
前面说过已经比对过的位置将放子数组中的最小值,所以

j用来遍历i+1及其后的数,这样可以减少比对次数。

PS:听说这种算法很累赘,但是对于初学者来说,能理解它,并自己做出来,很有成就感哦(比如我自己!),加油哦各位亲!

作者: 向晓伟    时间: 2014-7-4 19:00
你贴的代码怎么只有一行啊~
加油! 不积跬步无以至千里不积小流无以成江海!
作者: FrancisTan    时间: 2014-7-4 19:04
本帖最后由 FrancisTan 于 2014-7-4 19:08 编辑
向晓伟 发表于 2014-7-4 19:00
你贴的代码怎么只有一行啊~
加油! 不积跬步无以至千里不积小流无以成江海! ...

我也奇怪啊。我在弄我明明写上去了呀 求助啊,只能贴一行代码了

作者: FrancisTan    时间: 2014-7-4 19:15
FrancisTan 发表于 2014-7-4 19:04
我也奇怪啊。我在弄我明明写上去了呀 求助啊,只能贴一行代码了

哎呀,弄了半天才弄好。真是浪费时间,菜鸟不容易啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2