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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yihuyixi2 中级黑马   /  2015-3-24 00:41  /  1493 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java基础中,数组的冒泡排序的原理是什么?具体是个什么思路。

7 个回复

倒序浏览
冒泡排序:总是在比较相邻的两个元素。简单的理解数字就像是气泡,体积大的气泡下沉,体积小的气泡上升(从小到大排序),实现数字的排序,用到循环嵌套。
例如,一列随机数字(无序),要求按照从小到大排列。
思路:1.定义数组存放参加比较的随机数字;
2,利用循环嵌套,进行比较;
3,输出比价结果。
代码实现:
  1. class  BubbleSort
  2. {
  3. public static void main(String[] args)
  4.         {
  5.                 int[] arr = {2,3,6,34,14,21,15};
  6. //排序前
  7.                 printArray(arr);
  8. //冒泡排序
  9.                 bubble(arr);
  10. //排序后
  11.                 printArray(arr);
  12.         }


  13.         public static void bubble(int[] arr)
  14.         {
  15.                 for (int x=0;x<arr.length-1 ;x++ )
  16.                 {
  17.                         for(int y =0 ;y<arr.length-x-1 ;y++ )//-x:让每一次比较的元素减少;-1是避免角标月越界
  18.                         {
  19.                                 if (arr[y]>arr[y+1])
  20.                                 {
  21.                                         int temp = arr[y];
  22.                                         arr[y] = arr[y+1];
  23.                                         arr[y+1] = temp;
  24.                                 }
  25.                         }
  26.                 }
  27.         }
  28.        

  29.         public static void printArray(int[] arr)
  30.         {
  31.                 System.out.print("[");
  32.                 for (int i=0;i<arr.length ;i++ )
  33.                 {
  34.                         if(i!=arr.length-1)
  35.                                 System.out.print(arr[i]+",");
  36.                         else
  37.                                 System.out.print(arr[i]+"]");
  38.                 }
  39.        
  40.         }
  41. }
复制代码


回复 使用道具 举报
楼上解释很详细
回复 使用道具 举报
多看,慢慢就理解了,多敲就熟悉了
回复 使用道具 举报
假如我们对一个五位数的数组进行排序比较。
                        50 10 30 20 40
        第一步;我们拿40跟20比,发现40是老大,不用交换。
        第二步;然后向前推一步,就是拿20跟30比,发现30是老大,就要交换了。
        第三步:拿交换后的20跟10比,发现自己是老大,不用交换。
        第四步:拿10跟50交换,发现50是老大,进行交换。
        最后,我们经过一次遍历,把数组中最小的数字送上去了,以此类推
回复 使用道具 举报
卤煮没仔细看毕老师的视频吧
回复 使用道具 举报
两两对比,小者上浮
回复 使用道具 举报
涨姿势了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马