另一道关于数组的排序——冒泡有关问题

另一道关于数组的排序——冒泡问题
package what;

import java.util.Arrays;
public class Text {

public static void main(String[] args) {
// TODO Auto-generated method stub
   int[] num = new int[] { 1, 6, 5, 8, 9, 4, 7 };  
System.out.println("num数组的长度是:" + num.length);  

int temp = 0;// 用于两个数进行交换的中间变量  

      for (int i = 0; i < num.length; i++) {  
      // 外层循环开始 控制比较的开始位置 和比较的次数  

      for (int j = num.length - 1; j > i; j--) {  

  // 内层循环开始 对相邻的两个数进行比较 若后者比前者大则交换位置  
           if (num[j] > num[j - 1]) {  
                  temp = num[j - 1];  
              num[j - 1] = num[j];  
              num[j] = temp;  
              }  
          }  
      }  
 
     System.out.println(Arrays.toString(num));  
    }  

 

}



为什么外部循环是i++,而到了内部循环是j-- 而且,int j = num.length - 1;小弟实在看不懂。不是说数组的下标都是从0开始的,最后一个元素总是“数组名.length-1"吗?

------解决方案--------------------
引用:
为什么外部循环是i++,而到了内部循环是j-- 而且,int j = num.length - 1;小弟实在看不懂。不是说数组的下标都是从0开始的,最后一个元素总是“数组名.length-1"吗?

i从0开始,当然是 i++ 了 ,j从最后一个元素位置开始,当然是 j-- 了,正因为数组元素下标是从 0开始,所以最后一个元素总是“数组名.length-1",比如说你的数组共7个元素,则最后一个元素的下标是6