我知道因为数组的内存中连续和等分的特点,所以对于任意一个二维数组int[][]
LOC(i,j)=LOC(0,0) + (b*i + j)L
LOC(0,0)是该二维数组的起始存储位置,b 是每行的长度,L 是每个数据元素的宽度
所以 get 和 set 的时间复杂度是一个常数时间 O(1)
但是对于锯齿数组
int[][] ja = new int[4][];
ja[0] = new int[6];
ja[1] = new int[4];
ja[2] = new int[4];
ja[3] = new int[5];
第二维度的长度并不固定,如果要计算出 LOC(i,j)是不是需要通过 sum 确定偏移量
这样对于锯齿数组的 get 和 set 是不是 O(i-1)?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.