pull/944/head
krahets 1 year ago
parent c97bfd5aad
commit 61ae2b50ba

@ -867,7 +867,7 @@ comments: true
/* 列表扩容 */ /* 列表扩容 */
public void extendCapacity() { public void extendCapacity() {
// 新建一个长度为 size 的数组,并将原数组拷贝到新数组 // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组
nums = Arrays.copyOf(nums, capacity() * extendRatio); nums = Arrays.copyOf(nums, capacity() * extendRatio);
// 更新列表容量 // 更新列表容量
capacity = nums.length; capacity = nums.length;
@ -976,7 +976,7 @@ comments: true
/* 列表扩容 */ /* 列表扩容 */
void extendCapacity() { void extendCapacity() {
// 新建一个长度为 size * extendRatio 的数组,并将原数组拷贝到新数组 // 新建一个长度为原数组 extendRatio 倍的新数组
int newCapacity = capacity() * extendRatio; int newCapacity = capacity() * extendRatio;
int *tmp = nums; int *tmp = nums;
nums = new int[newCapacity]; nums = new int[newCapacity];
@ -1072,7 +1072,7 @@ comments: true
def extend_capacity(self) -> None: def extend_capacity(self) -> None:
"""列表扩容""" """列表扩容"""
# 新建一个长度为 self.__size 的数组,并将原数组拷贝到新数组 # 新建一个长度为原数组 __extend_ratio 数组,并将原数组拷贝到新数组
self.__nums = self.__nums + [0] * self.capacity() * (self.__extend_ratio - 1) self.__nums = self.__nums + [0] * self.capacity() * (self.__extend_ratio - 1)
# 更新列表容量 # 更新列表容量
self.__capacity = len(self.__nums) self.__capacity = len(self.__nums)
@ -1177,7 +1177,7 @@ comments: true
/* 列表扩容 */ /* 列表扩容 */
func (l *myList) extendCapacity() { func (l *myList) extendCapacity() {
// 新建一个长度为 self.__size 的数组,并将原数组拷贝到新数组 // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组
l.nums = append(l.nums, make([]int, l.numsCapacity*(l.extendRatio-1))...) l.nums = append(l.nums, make([]int, l.numsCapacity*(l.extendRatio-1))...)
// 更新列表容量 // 更新列表容量
l.numsCapacity = len(l.nums) l.numsCapacity = len(l.nums)
@ -1271,7 +1271,7 @@ comments: true
/* 列表扩容 */ /* 列表扩容 */
extendCapacity() { extendCapacity() {
// 新建一个长度为 size 的数组,并将原数组拷贝到新数组 // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组
this.#nums = this.#nums.concat( this.#nums = this.#nums.concat(
new Array(this.capacity() * (this.#extendRatio - 1)) new Array(this.capacity() * (this.#extendRatio - 1))
); );
@ -1690,7 +1690,7 @@ comments: true
/* 列表扩容 */ /* 列表扩容 */
func extendCapacity() { func extendCapacity() {
// 新建一个长度为 size 的数组,并将原数组拷贝到新数组 // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组
nums = nums + Array(repeating: 0, count: _capacity * (extendRatio - 1)) nums = nums + Array(repeating: 0, count: _capacity * (extendRatio - 1))
// 更新列表容量 // 更新列表容量
_capacity = nums.count _capacity = nums.count
@ -1803,7 +1803,7 @@ comments: true
// 列表扩容 // 列表扩容
pub fn extendCapacity(self: *Self) !void { pub fn extendCapacity(self: *Self) !void {
// 新建一个长度为 size * extend_ratio 的数组,并将原数组拷贝到新数组 // 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组
var newCapacity = self.capacity() * self.extend_ratio; var newCapacity = self.capacity() * self.extend_ratio;
var extend = try self.mem_allocator.alloc(T, newCapacity); var extend = try self.mem_allocator.alloc(T, newCapacity);
std.mem.set(T, extend, @as(T, 0)); std.mem.set(T, extend, @as(T, 0));
@ -1900,7 +1900,7 @@ comments: true
/* 列表扩容 */ /* 列表扩容 */
void extendCapacity() { void extendCapacity() {
// 新建一个长度为 _capacity * _extendRatio 的数组 // 新建一个长度为原数组 _extendRatio 倍的新数组
final _newNums = List.filled(_capacity * _extendRatio, 0); final _newNums = List.filled(_capacity * _extendRatio, 0);
// 将原数组拷贝到新数组 // 将原数组拷贝到新数组
List.copyRange(_newNums, 0, _nums); List.copyRange(_newNums, 0, _nums);

@ -600,7 +600,7 @@ $T(n)$ 是一次函数,说明时间增长趋势是线性的,因此可以得
根据定义,确定 $f(n)$ 之后,我们便可得到时间复杂度 $O(f(n))$ 。那么如何确定渐近上界 $f(n)$ 呢?总体分为两步:首先统计操作数量,然后判断渐近上界。 根据定义,确定 $f(n)$ 之后,我们便可得到时间复杂度 $O(f(n))$ 。那么如何确定渐近上界 $f(n)$ 呢?总体分为两步:首先统计操作数量,然后判断渐近上界。
### 1) 统计操作数量 ### 第一步:统计操作数量
针对代码,逐行从上到下计算即可。然而,由于上述 $c \cdot f(n)$ 中的常数项 $c$ 可以取任意大小,**因此操作数量 $T(n)$ 中的各种系数、常数项都可以被忽略**。根据此原则,可以总结出以下计数简化技巧: 针对代码,逐行从上到下计算即可。然而,由于上述 $c \cdot f(n)$ 中的常数项 $c$ 可以取任意大小,**因此操作数量 $T(n)$ 中的各种系数、常数项都可以被忽略**。根据此原则,可以总结出以下计数简化技巧:
@ -816,7 +816,7 @@ $$
} }
``` ```
### 2) 判断渐近上界 ### 第二步:判断渐近上界
**时间复杂度由多项式 $T(n)$ 中最高阶的项来决定**。这是因为在 $n$ 趋于无穷大时,最高阶的项将发挥主导作用,其他项的影响都可以被忽略。 **时间复杂度由多项式 $T(n)$ 中最高阶的项来决定**。这是因为在 $n$ 趋于无穷大时,最高阶的项将发挥主导作用,其他项的影响都可以被忽略。

Loading…
Cancel
Save