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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Select
  2. {
  3.         public static void swap(int[] arr,int a,int b)
  4.         {
  5.                 int temp = arr[a];                //运行时,脚标越界
  6.                 arr[a] = arr[b];
  7.                 arr[b] = temp;
  8.                 /*arr[a] = arr[a]^arr[b];               
  9.                 arr[b] = arr[a]^arr[b];
  10.                 arr[a] = arr[a]^arr[b];*/
  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-1-x; y++)
  17.                         {
  18.                                 if(arr[y]>arr[y+1])
  19.                                 {
  20.                                         /*int temp = arr[y];
  21.                                         arr[y] = arr[y+1];
  22.                                         arr[y+1] = temp;*/
  23.                                         swap(arr,arr[y],arr[y+1]);                //脚标越界
  24.                                 }
  25.                         }
  26.                 }
  27.         }

  28.         public static void printArray(int[] arr)
  29.         {
  30.                 System.out.print("[");
  31.                 for(int x=0; x<arr.length; x++)
  32.                 {
  33.                         if(x!=arr.length-1)
  34.                                 System.out.print(arr[x]+", ");
  35.                         else
  36.                                 System.out.print(arr[x]+"]\n");
  37.                 }
  38.         }

  39.         public static void main(String[] args)
  40.         {
  41.                 int[] arr = {9,8,7,6,5,4,3,2,1};
  42.                 //排序前:
  43.                 printArray(arr);
  44.                 //排序后:
  45.                 bubbleSort(arr);                //脚标越界
  46.                 printArray(arr);
  47.         }
  48. }
复制代码


1 个回复

倒序浏览
好吧,第24行应该把脚标位传进swap函数中,而不是元素,传元素,等于是把元素当脚标了。
  1. 24.                                        swap(arr,arr[y],arr[y+1]);                //脚标越界
复制代码

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