自学Java第四章——《数组》 (7)

示例代码:从大到小,从右到左

char[] arr = {'h','e','l','l','o','j','a','v','a'};
for(int i=1; i<arr.length; i++){//外循环的次数 = 轮数 = 数组的长度-1
   /*
   第1轮,i=1,从右到左两两比较,arr[8]与arr[7],arr[7]与arr[6]....arr[1]与arr[0]
   第2轮,i=2,从右到左两两比较,arr[8]与arr[7],arr[7]与arr[6]....arr[2]与arr[1]
   ...
   第8轮,i=8,从右到左两两比较,arr[8]与arr[7]
    arr[j]与arr[j-1]
   找两个关键点:(1)j的起始值:8(2)找j的终止值,依次是1,2,3,。。。8,得出j>=i
   */
   for(int j=8; j>=i; j--){
       //从大到小,后面的元素 > 前面的元素,就交换
       if(arr[j]>arr[j-1]){
           int temp = arr[j];
           arr[j] = arr[j-1];
           arr[j-1] = temp;
      }
  }
}

示例代码:简单的直接选择排序

int[] arr = {3,2,6,1,8};

for(int i=1; i<arr.length; i++){//外循环的次数 = 轮数 = 数组的长度-1
   //(1)找出本轮未排序元素中的最值
   /*
   未排序元素:
   第1轮:i=1,未排序,[0,4]
   第2轮:i=2,未排序,[1,4]
   ...
   
   每一轮未排序元素的起始下标:0,1,2,3,正好是i-1的
   未排序的后面的元素依次:
   第1轮:[1,4] j=1,2,3,4
   第2轮:[2,4] j=2,3,4
   第3轮:[3,4] j=3,4
   第4轮:[4,4] j=4
   j的起点是i,终点都是4
   */
   int max = arr[i-1];
   int index = i-1;
   for(int j=i; j<arr.length; j++){
       if(arr[j] > max){
           max = arr[j];
           index = j;
      }
  }
   
   //(2)如果这个最值没有在它应该在的位置,就与这个位置的元素交换
   /*
   第1轮,最大值应该在[0]
   第2轮,最大值应该在[1]
   第3轮,最大值应该在[2]
   第4轮,最大值应该在[3]
   正好是i-1的值
   */
   if(index != i-1){
       //交换arr[i-1]与arr[index]
       int temp = arr[i-1];
       arr[i-1] = arr[index];
       arr[index] = temp;
  }
}



//显示结果
for(int i=0; i<arr.length; i++){
System.out.print(arr[i]);
}

 

4.4 二维数组

二维数组的标记:[][]

4.4.1 相关的表示方式

(1)二维数组的长度/行数:

二维数组名.length

(2)二维数组的其中一行:

二维数组名[行下标]

行下标的范围:[0, 二维数组名.length-1]

(3)每一行的列数:

二维数组名[行下标].length

因为二维数组的每一行是一个一维数组

(4)每一个元素

二维数组名[行下标][列下标]

4.4.2 二维数组的声明和初始化

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjwys.html