明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1113|回复: 7

[提问] lisp 冒泡排序怎么写

[复制链接]
发表于 2021-3-27 14:24:31 | 显示全部楼层 |阅读模式
lisp 冒泡排序怎么写
一般用什么排序
发表于 2021-3-28 09:37:02 | 显示全部楼层
用sort函数吧
回复 支持 1 反对 0

使用道具 举报

发表于 2021-8-27 17:48:19 | 显示全部楼层

666
vl-sort几行代码完美解决问题
发表于 2021-8-28 02:11:53 | 显示全部楼层
(defun bubsor (lst)
  (while (not (apply '<= lst))
    (setq n 0)
    (setq vbd (vlax-make-safearray
                vlax-vbDouble
                (cons 0 (1- (length lst)))
              )
    )
    (vlax-safearray-fill vbd lst)
    (while (< n (1- (length lst)))
      (if (> (setq a (vlax-safearray-get-element vbd n))
             (setq b (vlax-safearray-get-element vbd (1+ n)))
          )
        (progn
          (vlax-safearray-put-element vbd n b)
          (vlax-safearray-put-element vbd (1+ n) a)
        )
      )
      (setq n (1+ n))
    )
    (setq lst (vlax-safearray->list vbd))
  )
  lst
)
发表于 2021-8-28 10:49:54 | 显示全部楼层
什么是冒泡?
发表于 2021-8-31 10:06:55 | 显示全部楼层

一种排序算法,就像水中的气泡,大的浮上去
发表于 2021-8-31 11:26:26 | 显示全部楼层
(defun bubsor (lst nlst)
  (if (cdr lst)
    (if        (>= (car lst) (cadr lst))
      (bubsor (cdr lst) (cons (car lst) nlst))
      (bubsor (cons (car lst) (cddr lst)) (cons (cadr lst) nlst))
    )
    (if        (apply '<= (cons (car lst) nlst))
      (cons (car lst) nlst)
      (bubsor (reverse (cons (car lst) nlst)) '())
    )
  )
)
冒泡尾递归
(bubsor '(9 6 8 7 2 6 3 4)'())-》(2 3 4 6 6 7 8 9)
发表于 2021-9-2 09:23:29 | 显示全部楼层
baitang36 发表于 2021-8-31 10:06
一种排序算法,就像水中的气泡,大的浮上去

哦,我还以为是弹出的窗口呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-16 10:47 , Processed in 0.158848 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表