@@ -29,20 +29,20 @@ object = %x7B ws [ member *( ws %x2C ws member ) ] ws %x7D
2929* 动态数组(dynamic array):可扩展容量的数组,如 C++ 的 [ ` std::vector ` ] ( http://en.cppreference.com/w/cpp/container/vector ) 。
3030* 有序动态数组(sorted dynamic array):和动态数组相同,但保证元素已排序,可用二分搜寻查询成员。
3131* 平衡树(balanced tree):平衡二叉树可有序地遍历成员,如红黑树和 C++ 的 [ ` std::map ` ] ( http://en.cppreference.com/w/cpp/container/map ) ([ ` std::multi_map ` ] ( http://en.cppreference.com/w/cpp/container/multimap ) 支持重复键)。
32- * 哈希表(hash table):通过哈希函数能实现$ O(1)$ 查询,如 C++11 的 [ ` std::unordered_map ` ] ( http://en.cppreference.com/w/cpp/container/unordered_map ) (` http://en.cppreference.com/w/cpp/container/unordered_multimap ` (http://en.cppreference.com/w/cpp/container/unordered_multimap ) 支持重复键)。
33-
34- 设一个对象有 $n$ 个成员,数据结构的容量是 $m$,$n \le m$ ,那么一些常用操作的时间/空间复杂度如下:
35-
36- | | 动态数组 | 有序动态数组 | 平衡树 | 哈希表 |
37- | ----------------- | :--------- :| :----------- :| :-------------- :| :-- -------:|
38- | 自定成员次序 | 可 | 否 | 否 | 否 |
39- | 初始化 $n$ 个成员| $ O(n)$ | $ O(n \ log n)$ | $ O(n \ log n)$ | $ O(n)$ |
40- | 加入成员 | 分摊 $ O(1)$ | $ O(n)$ | 分摊 $O(\ log n)$ | 分摊 $ O(1)$ |
41- | 移除成员 | $ O(n)$ | $ O(n)$ | 分摊 $O(\ log n)$ | 分摊 $ O(1)$ |
42- | 查询成员 | $ O(n)$ | $O(\ log n)$ | $O(\ log n)$ | $ O(1)$ |
43- | 遍历成员 | $ O(n)$ | $ O(n)$ | $ O(n)$ | $ O(m)$ |
44- | 检测对象相等 | $ O(n^2)$ | $ O(n)$ | $ O(n)$ | $ O(m)$ |
45- | 空间 | $ O(m)$ | $ O(m)$ | $ O(n)$ | $ O(m)$ |
32+ * 哈希表(hash table):通过哈希函数能实现 O(1) 查询,如 C++11 的 [ ` std::unordered_map ` ] ( http://en.cppreference.com/w/cpp/container/unordered_map ) (` http://en.cppreference.com/w/cpp/container/unordered_multimap ` (http://en.cppreference.com/w/cpp/container/unordered_multimap ) 支持重复键)。
33+
34+ 设一个对象有 n 个成员,数据结构的容量是 m,n ⩽ m ,那么一些常用操作的时间/空间复杂度如下:
35+
36+ | | 动态数组 | 有序动态数组| 平衡树 | 哈希表 |
37+ | ---------------| :-------:| :----------:| :------------:| :-------:|
38+ | 自定成员次序 | 可 | 否 | 否 | 否 |
39+ | 初始化 n 个成员| O(n) | O(n log n) | O(n log n) | O(n) |
40+ | 加入成员 | 分摊 O(1)| O(n) | 分摊 O( log n) | 分摊 O(1)|
41+ | 移除成员 | O(n) | O(n) | 分摊 O( log n) | 分摊 O(1)|
42+ | 查询成员 | O(n) | O( log n) | O( log n) | O(1) |
43+ | 遍历成员 | O(n) | O(n) | O(n) | O(m) |
44+ | 检测对象相等 | O(n^2) | O(n) | O(n) | O(m) |
45+ | 空间 | O(m) | O(m) | O(n) | O(m) |
4646
4747在 ECMA-404 标准中,并没有规定对象中每个成员的键一定要唯一的,也没有规定是否需要维持成员的次序。
4848
0 commit comments