[英]SCHEME | native sort function complexity
我一直在尋找答案,但找不到任何答案,甚至在SCHEME手冊中也沒有找到答案,所以……我想知道在scheme(在基本包中)中實現的本機排序函數的運行時復雜度是多少。 我聽說有傳言說這是O(n log n)或O(n 2 ),但未經證實是100%正確。
我也想聽聽那里使用的排序算法是什么。
謝謝!
嬉皮的答案基本上是一個完整的答案。
簡短的答案:這取決於實現,但是R6RS要求這種類型穩定,因此很可能是mergesort。
您正在使用什么方案?
GNU MIT Scheme 實現了兩種排序算法 :
merge-sort
quick-sort
正確實施的每個程序將在O(n log n)時間中運行。 這是任何比較排序算法的最佳時間。 sort
過程是merge-sort
的別名。 同樣,它的可變對等物sort!
是可變的merge-sort!
的別名merge-sort!
。
那么,為什么要進行quick-sort
呢? quick-sort
的優點是,允許突變時可以在適當的位置進行排序。 quick-sort!
可以實現不要求超出分配給輸入向量的任何額外的內存:它可以實現需要剛好 n空間,而不是O(n)的空間。 在當今的台式計算機上,這並不是什么大問題,但是在資源有限的情況下很重要。
CA Hoare的原始論文描述quicksort。
根據消息來源 , #lang #lang racket
使用的是Cezary Juszczak的“ 基於半復制合並算法的快速合並排序實現 ”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.