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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. * 冒泡排序分析 :
  3. * 算法思想:
  4. *         每次相邻的两个进行比较,较大不断后移
  5. *         最终每趟最大的沉底
  6. *         示例 :索引 0 1 2 3 4
  7. *                 i  5 8 9 1 2
  8. *
  9. *                    5 8 9 1 2  5<8  不动       
  10. *         第0趟          5 8 9 1 2  8<9  不动
  11. *         5 8 1 9 2  9>1 交换
  12. *         5 8 1 2 9  9>2 交换  得出最大值为9  arr[4] = 9
  13. *         共比较4次
  14. *  
  15. *  第1趟          5 8 1 2 9  5<8 不动
  16. *         5 1 8 2 9  8>1 交换
  17. *         5 1 2 8 9  8>2 交换  得出8为次大           arr[3] = 8
  18. *         共比较3次
  19. *         
  20. *  第2趟         1 5 2 8 9  5>1 交换
  21. *         1 2 5 8 9  5>2 交换  得出5位第三大         arr[2] = 5
  22. *         共比较2次
  23. *   
  24. *  第3趟       1 2 5 8 9   1<2 不动  得出2是第四大         arr[1] = 2
  25. *         共比较1次                                    剩余元素则为最小    arr[0] = 1
  26. *         
  27. *                                          
  28. *  分析得 外圈总共4次,外圈第0次循环内圈是4次
  29. *                             外圈第1次循环内圈是3次
  30. *                             外圈第2次循环内圈是2次
  31. *                             外圈第3次循环内圈是1次
  32. *  定义外圈变量 x = 0 ;则内圈是从0 - 4 也就是小于5
  33. *                  x = 1 , y 是 0 - 3  也就是小于4 5 - 1
  34. *          x = 2 . y 是 0 - 2 也就是小于3 5 - 2
  35. *          x = 3 . y 是 0 - 1 也就是小于2 5 - 3
  36. *  
  37. */
  38. public class BubbleSort {

  39.         /**
  40.          * @param args
  41.          */
  42.         static int[] arr = {5,8,9,1,2};
  43.         public static void main(String[] args) {

  44.                 sortArr();
  45.                 printArr();
  46.         }

  47.         public  static void printArr() {
  48.                 System.out.print("[");
  49.                 for (int i = 0; i < arr.length; i++) {
  50.                         if(i!=arr.length-1){
  51.                         System.out.print(arr[i]+" ,");
  52.                         }else{
  53.                                 System.out.println(arr[i]+"]");
  54.                         }
  55.                 }
  56.         }

  57.         public static void sortArr() {
  58.                 for (int i = 0; i < arr.length-1; i++) {
  59.                         for (int j = 0; j < arr.length-1-i; j++) {
  60.                                 if(arr[j]>arr[j+1]){
  61.                                         swap(arr,j,j+1);
  62.                                 }
  63.                         }
  64.                 }
  65.         }

  66.         private static void swap(int[] arr, int i, int j) {
  67.                
  68.                 int temp = arr[i];
  69.                 arr[i] = arr[j];
  70.                 arr[j] = temp;
  71.                
  72.         }

  73. }
复制代码

17 个回复

倒序浏览
本帖最后由 可以假装看不见 于 2016-5-26 21:56 编辑
  1. /*
  2. * 冒泡排序分析 :
  3. * 算法思想:
  4. *         每次相邻的两个进行比较,较大不断后移
  5. *         最终每趟最大的沉底
  6. *         示例 :索引 0 1 2 3 4
  7. *                i  5 8 9 1 2
  8. *
  9. *              5 8 9 1 2  5<8  不动       
  10. *         第0趟   5 8 9 1 2  8<9  不动
  11. *             5 8 1 9 2  9>1 交换
  12. *             5 8 1 2 9  9>2 交换  得出最大值为9  arr[4] = 9
  13. *              共比较4次
  14. *  
  15. *  第1趟           5 8 1 2 9  5<8 不动
  16. *                     5 1 8 2 9  8>1 交换
  17. *                     5 1 2 8 9  8>2 交换  得出8为次大           arr[3] = 8
  18. *                     共比较3次
  19. *         
  20. *  第2趟          1 5 2 8 9  5>1 交换
  21. *                    1 2 5 8 9  5>2 交换  得出5位第三大         arr[2] = 5
  22. *                     共比较2次
  23. *   
  24. *  第3趟         1 2 5 8 9   1<2 不动  得出2是第四大         arr[1] = 2
  25. *                    共比较1次                                    剩余元素则为最小    arr[0] = 1
  26. *         
  27. *                                          
  28. *  分析得 外圈总共4次,外圈第0次循环内圈是4次
  29. *                             外圈第1次循环内圈是3次
  30. *                             外圈第2次循环内圈是2次
  31. *                             外圈第3次循环内圈是1次
  32. *  定义外圈变量 x = 0 ;则内圈是从0 - 4 也就是小于5
  33. *                  x = 1 , y 是 0 - 3  也就是小于4 5 - 1
  34. *          x = 2 . y 是 0 - 2 也就是小于3 5 - 2
  35. *          x = 3 . y 是 0 - 1 也就是小于2 5 - 3
  36. *  
  37. */
  38. public class BubbleSort {

  39.         /**
  40.          * @param args
  41.          */
  42.         static int[] arr = {5,8,9,1,2};
  43.         public static void main(String[] args) {

  44.                 sortArr();
  45.                 printArr();
  46.         }

  47.         public  static void printArr() {
  48.                 System.out.print("[");
  49.                 for (int i = 0; i < arr.length; i++) {
  50.                         if(i!=arr.length-1){
  51.                         System.out.print(arr[i]+" ,");
  52.                         }else{
  53.                                 System.out.println(arr[i]+"]");
  54.                         }
  55.                 }
  56.         }

  57.         public static void sortArr() {
  58.                 for (int i = 0; i < arr.length-1; i++) {
  59.                         for (int j = 0; j < arr.length-1-i; j++) {
  60.                                 if(arr[j]>arr[j+1]){
  61.                                         swap(arr,j,j+1);
  62.                                 }
  63.                         }
  64.                 }
  65.         }

  66.         private static void swap(int[] arr, int i, int j) {
  67.                
  68.                 int temp = arr[i];
  69.                 arr[i] = arr[j];
  70.                 arr[j] = temp;
  71.                
  72.         }

  73. }
复制代码


回复 使用道具 举报
以学会,不知道为什么现在的基础班不交冒泡排序了,以前都有,还有折半查找什么的都没有了
回复 使用道具 举报
顶一下又不会怀孕!!!!!
回复 使用道具 举报
顶一个!1!
回复 使用道具 举报
已收 谢谢分享
回复 使用道具 举报
看着感觉还是有点小复杂
回复 使用道具 举报
真心觉得经典的冒泡排序,多可爱啊
回复 使用道具 举报
大笑哈哈 发表于 2016-5-26 22:09
以学会,不知道为什么现在的基础班不交冒泡排序了,以前都有,还有折半查找什么的都没有了 ...

这是一种算法,现在我觉得黑马基础班讲算法很少,都是教你怎么写代码,不教底层了,为了速成,到最后还是需要自己去学习,排序算法,自己研究上一个月都不为过
回复 使用道具 举报
loop 中级黑马 2016-5-27 22:15:54
10#
.....................
回复 使用道具 举报
可以假装看不见 发表于 2016-5-27 21:41
这是一种算法,现在我觉得黑马基础班讲算法很少,都是教你怎么写代码,不教底层了,为了速成,到最后还是需要 ...

具体到什么地方学习这些算法?还有底层这些,在哪里可以学到?
回复 使用道具 举报
顶顶顶顶
回复 使用道具 举报
大笑哈哈 发表于 2016-5-27 23:17
具体到什么地方学习这些算法?还有底层这些,在哪里可以学到?

这个就是for嵌套,可以看下打印倒三角,正三角,99乘法表 都是这个逻辑算法,底层就是循环遍历,for的底层就不知道了
回复 使用道具 举报
zhenying.wang 发表于 2016-5-27 00:13
看着感觉还是有点小复杂

有点乱代码 不知道怎么回事,你可以自己粘贴出去 拍下版  我觉得这个还是比较清晰的思路
回复 使用道具 举报
这些老师还讲过,我记得以前看视频还有折半查找什么的现在都没
回复 使用道具 举报
果断顶啦!但是这个学过现在有点记得不起来,还是要知新 加 温故呀
回复 使用道具 举报
表示今天研究这个研究了半天
回复 使用道具 举报
不错,学习了

评分

参与人数 1黑马币 +2 收起 理由
我以为我会勇敢 + 2 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马