作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果内存不稀缺,您将如何使用具有用于表示和排序集合的库的语言来实现排序
最佳答案
集合是无序的,所以排序集合是没有用的。 “排序”集与集本身相同,即使内存不足也是如此。
在非稀缺内存中表示一个集合,就像在稀缺内存中表示一个集合一样。然而,如果内存不稀缺,我们可以为内存中的每个值或对象创建一个二进制谓词,声明:“我是集合 X 的成员”。
如果要检查对象 Y 是否是集合 X 的成员,则只需检查二元谓词即可;这是对还是错。
集合中所有对象的迭代就像一个数组。它也可以实现为双链表或使用哈希表。不同之处在于细节;您想要集合中的哪些对象?
如果内存不稀缺,并且您的 CPU 中有足够的马力,那么我会将对象的每个哈希值存储在内存中,而不是即时计算。然后,集合的哈希表式实现对于列出功能来说真的很快。从集合中添加/删除对象相当慢。
如果添加/删除比列表更需要,任何链表都可以。
两种方式都可以使用每个对象的谓词值。这取决于您的要求;例如,您是否允许两个对象同时出现在两组中? (通常这是一个"is"),然后您需要为集合中的每个对象存储一个数组/链表存储,以存储它的成员信息。
不过,没有“唯一正确”的解决方案。只是我的两个便士。
关于java - 如果内存不稀缺,您将如何用一种语言实现一种排序,其中包含用于表示和排序集合的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021201/
我是一名优秀的程序员,十分优秀!