求無序陣列總第n大的數

babyyellow發表於2012-08-22
微博裡內容了,原文是求  無序陣列中第二大的數。


實際程式設計實踐中,不可能只求第二大,我擴充套件為第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部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-741551/,如需轉載,請註明出處,否則將追究法律責任。

相關文章