有没有人用Dr Scheme编程?如何使用列表排序?

发布于 2024-08-07 00:22:34 字数 104 浏览 4 评论 0原文

使用哪种数据结构对 dr 方案中的 n 个数字进行排序,我不允许使用向量和结构。如果我使用列表,我无法编辑列表值。那么我如何对 n 个数字进行排序。我使用的语言是文本 mzscheme rsr5

which data structure to use to sort n numbers in dr scheme i m not allowed to use vector and structure ..if i use list i cant edit the list values .so how can i sort n numbers . the language i use is textual mzscheme rsr5

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

飘落散花 2024-08-14 00:22:34

如果您无法编辑列表值...返回一个新列表! :-)

If you cannot edit the list values ... return a new list! :-)

夏天碎花小短裙 2024-08-14 00:22:34

插入排序解决方案在方案中非常简单(使用 N^2 的 BigO 性能虽然很差,但仍然可以完成工作)

对于对 n 个数字进行排序,您可以使用列表数据类型来保存值,数字列表可以是:

  • 空,

  • (cons number ListofNumber)

对于插入排序,您需要 2 个函数,以及将一个数字插入到已存在的数字中的插入器已排序的数字列表和另一个将递归调用此插入的函数。

插入函数的输入输出

;;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))) )))

我希望这个答案适合您的问题

The insertion sort solution is pretty easy in scheme (with BigO of N^2 performance it is poor but still does the job)

For sorting n numbers, you can use the list data type to hold the values and a list of numbers is either;

  • empty,

  • (cons number ListofNumber)

For insertion sort, you need 2 functions, and Inserter that does a single insert of a number to an already sorted list of numbers and another function that will call this insert recursivly.

The input-output of insert function

;;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))) )))

I hope this answer fits your question

耀眼的星火 2024-08-14 00:22:34

不确定您是否应该为作业编写自己的冒泡排序,但否则这是内置的:

(排序(列表 1 2 4 3)<)
(1 2 3 4)

Not sure if you are supposed to be writing your own bubblesort for homework, but otherwise this is built in:

(sort (list 1 2 4 3) <)
(1 2 3 4)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文