2019-12-16 00:14:47
2019-12-16 09:22:14
2019-12-16 06:43:12
2021-09-01 07:01:43
2019-12-16 09:56:10
2019-12-16 00:03:17
2023-05-24 23:18:34
2020-12-14 16:13:13
2020-04-26 10:09:37
2020-04-05 10:47:43
2021-03-04 13:09:52
2020-10-18 11:20:31
2020-08-03 17:13:34
2020-01-01 10:55:29
2019-12-25 20:57:25
2019-12-23 19:02:16
2019-12-20 10:22:56
2019-12-18 22:01:21
2019-12-17 15:56:51
精选留言
2019-12-16 00:14:47
2019-12-16 09:22:14
2019-12-16 06:43:12
2021-09-01 07:01:43
2019-12-16 09:56:10
2019-12-16 00:03:17
2023-05-24 23:18:34
--------------------------------------------------
数组,插入操作,2.在中间第k位插入,时间复杂度O(1)
--------------------------------------------------
推导过程:
假设数组为arr[n],即数组的大小是n
当数组中有效数据长度len=i时,有效数据下标的范围是 0~i-1,插入位置k的取值范围是0~i,共(i+1)种情况
当k=0,有1次插入操作,和i次数据移动操作(原0~i-1的数据各向后移动1次),总共i+1次操作
当k=1,有1次插入操作,和i-1次数据移动操作(原1~i-1的数据各向后移动1次),总共i次操作
当k=2,有1次插入操作,和i-2次数据移动操作(原2~i-1的数据各向后移动1次),总共i-1次操作
......
当k=i-1,有1次插入操作,和1次数据移动操作(原i-1的数据各向后移动1次),总共2次操作
当k=i,有1次插入操作,总共1次操作
总计操作次数,m=1+2+3+...+(i+1)=(i+1)(i+2)/2 ≈ i^2
所以对于len=i时,共有i+1种情况,总计i^2次操作
i的取值范围是0~n-1
所以总的情况数 = 1+2+3+...+(i+1)+...+n = n(n+1)/2 ≈ n^2
总的操作数 = 1^2+2^2+...+n^2 = n(n+1)(2n+1)/6 ≈ n^3
所以平均复杂度 = n^3 / n^2 = O(n)
2020-12-14 16:13:13
2020-04-26 10:09:37
2020-04-05 10:47:43
2021-03-04 13:09:52
感觉有些时候自己也是那样学的
知道某个阶段也是要硬坚持过去
这不 上午没事的时候就开发实际在编辑器里刷题了
2020-10-18 11:20:31
2是不要求数组保持原先的顺序吗?和1/3标准不一样,会造成困惑。
2020-08-03 17:13:34
2020-01-01 10:55:29
2019-12-25 20:57:25
2019-12-23 19:02:16
2019-12-20 10:22:56
2019-12-18 22:01:21
2019-12-17 15:56:51