用于在dr方案中对n个数字进行排序的数据结构我不允许使用向量和结构..如果我使用列表我无法编辑列表值。所以我如何排序n个数字。我使用的语言是文本mzscheme rsr5
答案 0 :(得分:7)
如果您无法编辑列表值...返回一个新列表! : - )
答案 1 :(得分:2)
插入排序解决方案在计划中非常简单(具有N ^ 2性能的BigO很差,但仍然可以完成工作)
对于n个数字的排序,您可以使用列表数据类型来保存值,并且数字列表是;
空,
(利弊号码ListofNumber)
对于插入排序,您需要2个函数,Inserter对已经排序的数字列表执行单个数字插入,而另一个函数将递归调用此插入。
插入功能的输入输出
;;insert: Number ListOfNumber(Sorted) -> ListOfNumber(Sorted)
(define (insert n lon)
(cond
[(empty? lon) (cons n lon)]
[(<= n (first lon)) (cons n lon)]
(else
(cons (first lon) (insert n (rest lon))) )))
;;insertion-sort: ListOfNumber -> ListOfNumber(Sorted)
(define (insertion-sort lon)
(cond
[(empty? lon) lon] ;;if the list is empty than the numbers are sorted
(else
(insert (first lon) (insertion-sort (rest lon))) )))
我希望这个答案适合你的问题
答案 2 :(得分:0)
不确定你是否应该为家庭作业编写自己的冒泡排序,否则这是内置的:
(sort(list 1 2 4 3)&lt;)(1 2 3 4)