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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始




  1. /*
  2. 对给定数组进行排序
  3. {6,3,1,5,9,7,8}

  4. */


  5. /*
  6. 选择排序:
  7. 内循环结束一次,最值出现在头角标的位置



  8. */
  9. class ArrayTest2
  10. {
  11.         /*冒泡排序*/
  12.         public static void bubbleSort(int [] arr)
  13.         {
  14.                 for (int x=0;x<arr.length-1 ;x++ )

  15.                 {
  16.                         for (int y=0;y<arr.length-x-1 ;y++ )//-x:让每次比较的元素减少。-1:避免角标越界
  17.                         {
  18.                                 if(arr[y]>arr[y+1])
  19.                                 {
  20.                                         swap(arr,y,y+1);
  21.                                 }
  22.                         }
  23.                 }
  24.         }
  25.        
  26.         public static void swap(int [] arr,int a,int b)
  27.                 {
  28.                 int temp=arr[a];
  29.                 arr[a]=arr[b];
  30.                 arr[b]=arr[a];
  31.                 }
  32.         public static void main(String[] args)
  33.         {
  34.                
  35.                         int[] arr = {6,3,1,5,9,7,8};
  36.                 //排序前
  37.                         printArray(arr);
  38.                         //排序
  39.                         bubbleSort(arr);
  40.                         //排序后:
  41.                         printArray(arr);
  42.        
  43.         }
  44.         public static void printArray(int[] arr)
  45.         {
  46.           
  47.            for (int x=0;x<arr.length ;x++ )
  48.            {
  49.                   
  50.                    if(x!=arr.length-1)
  51.                    System.out.print(arr[x]+", ");
  52.                    else
  53.                            System.out.println(arr[x]);
  54.            }
  55.         }
  56.        

  57. }


复制代码
排序后的结果完全不对,这是为什么呢?

QQ截图20140306102933.png (1.28 KB, 下载次数: 9)

QQ截图20140306102933.png

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

倒序浏览
swap函数写错了吧,  int temp=arr[a];
                               arr[a]=arr[b];
                               arr[b]=temp;  这样才对吧

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报 1 0
这样改应该对了

2014-03-06_110239.jpg (7.24 KB, 下载次数: 6)

2014-03-06_110239.jpg
回复 使用道具 举报
焚雨成灰 发表于 2014-3-6 11:03
swap函数写错了吧,  int temp=arr[a];
                               arr[a]=arr;
                     ...

haha 真的是哦!!:kiss:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马