ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 求无序数组总第n大的数

求无序数组总第n大的数

原创 Linux操作系统 作者:babyyellow 时间:2012-08-22 09:51:34 0 删除 编辑
微博里内容了,原文是求  无序数组中第二大的数。


实际编程实践中,不可能只求第二大,我扩展为第n 大

给出lisp 的代码:

一个基于 list 的,一个是基于数组的。

CL-USER> (defun  get-nth-max (lst n)
       (let (( order (sort lst #'>=)))
         (nth n order)))
GET-NTH-MAX

CL-USER> (get-nth-max '(49 20 50 4 2 1 6 8 10) 5)
8
CL-USER> (sort '(49 20 50 4 2 1 6 8 10) #'>=)
(50 49 20 10 8 6 4 2 1)



CL-USER> (defun  get-ntharr-max (arr n)
       (let (( order (sort arr #'>=)))
         (aref order (1- n))))
GET-NTHARR-MAX

CL-USER> (sort  #1a(9 8  20 50 4 2 1 6 8 10) #'>=)
#(50 20 10 9 8 8 6 4 2 1)






来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/133735/viewspace-741551/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。 潜意识沟通实证者 心理咨询师。 禅修布道者, 禅修指导员。 禅定实证者。

注册时间:2010-12-02

  • 博文量
    367
  • 访问量
    1908848