为什么数组下标从0开始?

为什么数组下标从0开始?

先说答案吧:

历史问题,C语言数组下标使用0,于是之后的语言都使用0数组的偏移运算规则历史问题这个不用多说了,下面说一下第二条原因

我们知道数组因为内存都是连续存放的,每个元素的大小都是固定的,所以支持随机访问,我们只需要根据偏移和元素大小来计算出地址即可实现随机任意的访问数组中的元素,所以随机访问效率为 O(1)

数组查找一个元素的效率为O(n),如果是有序数组查找一个元素使用二分的话那就是O(logn)

a[i]的地址 = a + i * size

我们看到,如果是第一个元素,那么i=0,如果是第二个元素那么i=1 ,这就是为什么数组下标从0开始的原因

但是如果硬要从1开始的话,那么上述的公式就会变成如下:

a[i]的地址 = a + (i-1) * size

这样就会多一次i-1的减法操作,产生不必要的消耗,因为数组可能会进行一个频繁的随机查找

相关推荐

G.E.M到底是什么意思?或将作为邓紫棋的新艺名,网友高呼大有深意
信用卡账期和还款日期是多久
谁有365比分链接

信用卡账期和还款日期是多久

🗓️ 08-30 👁️ 8925
罪恶都市基本常识
谁有365比分链接

罪恶都市基本常识

🗓️ 08-25 👁️ 7828

友情链接