Cocoa 使用什么样的排序?
What kind of sort does Cocoa use?
我总是对我们现代语言或框架创建的抽象感到惊讶,即使是那些被认为相对较低级别的抽象,例如 Objective-C/Cocoa。
这里我感兴趣的是在 NSArray
上调用 sortedArrayUsingComparator:
时执行的排序类型。它是动态的,例如分析环境的当前约束(特别是可用内存)和数组的属性(长度、唯一值),并相应地选择最佳排序,还是始终使用相同的排序,例如 Quick 或 Merge排序?
应该可以通过分析该方法相对于 N 的 运行 时间来测试这一点,只是想知道是否有人已经费心了。
这已在开发者大会上进行了描述。排序不需要任何内存。它检查在开头或结尾或两者是否有一个排序的数字范围,并利用它。您可以问问自己,如果前 50,000 个条目按降序排序,您将如何对 100,000 个条目数组进行排序。
我总是对我们现代语言或框架创建的抽象感到惊讶,即使是那些被认为相对较低级别的抽象,例如 Objective-C/Cocoa。
这里我感兴趣的是在 NSArray
上调用 sortedArrayUsingComparator:
时执行的排序类型。它是动态的,例如分析环境的当前约束(特别是可用内存)和数组的属性(长度、唯一值),并相应地选择最佳排序,还是始终使用相同的排序,例如 Quick 或 Merge排序?
应该可以通过分析该方法相对于 N 的 运行 时间来测试这一点,只是想知道是否有人已经费心了。
这已在开发者大会上进行了描述。排序不需要任何内存。它检查在开头或结尾或两者是否有一个排序的数字范围,并利用它。您可以问问自己,如果前 50,000 个条目按降序排序,您将如何对 100,000 个条目数组进行排序。