数组中的number.length-1,“-1”代表什么

时间:2013-10-05 09:52:16

标签: arrays sorting

我是Java的新手。我从一个网站得到这个,它确实是bubblesort。我想知道为什么“number.length”之后会出现“-1”。我只是不太明白。如果有人能提供帮助,我会感激不尽。

import java.util.Arrays;

public class Bubblesort {

  public static void main(String[] args) {
    int[] number = {5,16,4,32,30};

    int j;
    boolean flag = true;   // set flag to true to begin first pass
    int temp;   //holding variable

    while ( flag )
    {
          flag= false;    //set flag to false awaiting a possible swap
          for( j=0;  j <number.length-1;  j++ )
          {
                 if ( number[ j ] > number[j+1] )   // change to > for ascending sort
                 {
                         temp = number[ j ];                //swap elements
                         number[ j ] = number[ j+1 ];
                         number[ j+1 ] = temp;
                        flag = true;              //shows a swap occurred
                }
          }
    }
    System.out.println(Arrays.toString( number ));
  }
}

7 个答案:

答案 0 :(得分:2)

数组是“从零开始”的,这意味着第一个项目的位置编号为零(0)。

如果你有5个项目,那么这就是它的样子:Slot: [0] [1] [2] [3] [4],所以你从0开始,然后转到长度(5)减1。

答案 1 :(得分:2)

其他大多数答案都没有具体回答为什么它在这个算法中完成了。是的,number.length-1是数组number中的最后一个索引。但通常,在for循环中遍历数组j < number.length的所有元素将是循环的良好结束条件,因为它会在j到达时停止并且不执行循环体number.length

在这种情况下,该算法稍后会将number[ j ]number[ j+1 ]进行比较。这就是为什么循环需要以最后一个索引之下的j一个值停止的原因。

答案 2 :(得分:1)

要直接回答这个问题,number.length-1表示“从number.length中减去1。但是要稍微扩展它在代码中的使用方式:

for( j=0;  j <number.length-1;  j++ )

通常,要让j从第一个有效索引运行到最后一个,它看起来像

for (j=0; j<number.length; j++)

允许j0运行到number.length - 1

然而,您要求的代码实现的算法会减去一个,因为它会查看除最后一个之外的所有元素。对于每个元素,它会查看该元素和下一个元素。它必须跳过最后一个元素,因为最后一个元素没有下一个元素。

答案 3 :(得分:0)

如果数组的长度为n,则其第一个元素位于索引0,其最后一个元素位于索引n-1

答案 4 :(得分:0)

您需要从数组的长度中删除1以获取最后一个元素,因为数组是从0开始的,但长度是从1开始的。

答案 5 :(得分:0)

从字面上看,number.length的值减去1

答案 6 :(得分:0)

因为您使用的是来自j = 0

的循环

5个元素的数组具有从0到4的索引

int[] arr = new int[5];

arr[0] first element 
arr[1] second element 
arr[2] third element
arr[3] fourth element 
arr[4] fifth element  

如果你做arr.length(),它将给出5

所以在循环中我们做0到(arr.length() - 1)