微博里内容了,原文是求 无序数组中第二大的数。
实际编程实践中,不可能只求第二大,我扩展为第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/,如需转载,请注明出处,否则将追究法律责任。