real is reasonable. 存在即是合理。
每一种算法都有它存在的理由。
比如哈希表的实现,碰撞处理:
Python使用开放寻址法(二次探测),Java使用链接法(链表+红黑树)。
Python的开放寻址法的内存局部性好,CPU Cache命中率高,没有内存碎片化的问题,没有GC压力。
Java就相反,它假设自己内存无限,大不了stop the world,至于性能不性能的就无所谓,要性能就用不着Java了.
比如冒泡排序:
很多人说冒泡排序一无是处。
在数据集是正太分布、均匀分布的情况下,冒泡排序最差;
但是真实数据往往是帕雷托分布,而且数据大致有序,这样在数据不大的情况下,冒泡排序反而比快速排序之类的快。(假设冒泡采用了提前终止优化)
B树、B+树适合文件系统,减少磁盘访问次数。
【 在 hgoldfish 的大作中提到: 】
: 红黑树已经 out 啦,
: 来写 b 树吧!
: 我觉得各种编程语言,都应该使用 B 树代码红黑树作为标准库默认的 MAP 实现。
: ...................
--
修改:PlutoKey FROM 111.55.204.*
FROM 111.55.204.*