黑马程序员技术交流社区

标题: 冒泡排序第二个for里面为什么要减i减1? [打印本页]

作者: 20140829    时间: 2014-10-18 18:32
标题: 冒泡排序第二个for里面为什么要减i减1?
  1. class A5 {
  2.         public static void main(String[] args) {
  3.                 int[] arr = { 1, 5, 2, 6, 3 };
  4.                 for (int i = 0; i < arr.length; i++) {
  5.                         for (int j = 0; j < arr.length-i-1; j++) {
  6.                                 if (arr[j]>arr[j+1]) {
  7.                                         int temp=arr[j];
  8.                                         arr[j]=arr[j+1];
  9.                                         arr[j+1]=temp;
  10.                                 }
  11.                         }
  12.                         System.out.print(arr[i]);
  13.                 }

  14.         }
  15. }
复制代码



作者: LL.t    时间: 2014-10-20 13:02
举例:
arr.length = 5
外循环 i=0
那么内循环里面的控制语句 j<arr.length - i 也就等同于(j < arr.length)
这样下一步if 语句里面的 arr[j+1]) 就下标超界了




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