簡體   English   中英

計划| 本機排序函數復雜度

[英]SCHEME | native sort function complexity

我一直在尋找答案,但找不到任何答案,甚至在SCHEME手冊中也沒有找到答案,所以……我想知道在scheme(在基本包中)中實現的本排序函數的運行時復雜度是多少。 我聽說有傳言說這是O(n log n)或O(n 2 ),但未經證實是100%正確。

我也想聽聽那里使用的排序算法是什么。

謝謝!

嬉皮的答案基本上是一個完整的答案。

簡短的答案:這取決於實現,但是R6RS要求這種類型穩定,因此很可能是mergesort。

您正在使用什么方案?

GNU MIT計划

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM