它不需要计算数组中的每个元素吗?因此,不一定数量的操作,所以O(n)?
发布于 2017-10-21 08:55:20
不,Java数组有一个length
属性来存储它们的长度(即每个数组都知道自己的长度)。没有计数是必要的。
发布于 2017-10-21 09:07:48
考虑一下,如果您正在编写一种编程语言,并且必须实现一个数组类型。你会怎么做?
显然,您需要知道存储数组需要多少内存。因此,您可能会想要以某种方式跟踪这一点。
因此,在所有有数组的语言中,数组中的元素数也作为数组的一部分存储。知道数组的长度只不过是查看长度值,即O(1)操作。
C和C++是特殊的.
它们以几乎相同的语法处理指针和数组。这意味着,如果将实际数组视为指针,则会丢失大小信息。
但是,即使没有,也可以方便地存储字符串之类的东西,因为字符串的长度可能会有所不同。标记字符串结尾的旧的C样式方法是使用零值的字符,即空字符。
因此,要找到C-字符串的结尾,无论包含它的数组有多大,都必须对所有字符进行计数,直到找到值为0的字符,即O(n)操作。
--这与不知道包含的数组的长度不一样。
在处理C-字符串时,访问字符串数组的过程中可能不会知道包含字符串的数组的大小,因为前面提到的问题是数组很容易退化为指针。
,所以要回答您的问题,这在某种程度上取决于您所说的“数组”是什么意思。如果您正在谈论一些打开的序列,例如字符设备或管道,那么是的,您必须有某种方法来确定何时遇到了最后一个元素。但是对于数组本身,则不是,数组的大小是其类型的一个不可分割的部分。
发布于 2017-10-21 09:54:53
嗯..?你是C开发人员吗?
int[] arr = new int[500];
System.out.println(arr.length); //Prints 500
https://stackoverflow.com/questions/46865652
复制相似问题