用lisp写一个冒泡排序
时间: 2023-03-26 07:00:43 浏览: 271
(defun bubble-sort (lst)
(let ((n (length lst)))
(do ((i (1+ i)))
((= i n) lst)
(do ((j (1+ j)))
((= j (- n i 1)) nil)
(when (> (nth j lst) (nth (1+ j) lst))
(rotatef (nth j lst) (nth (1+ j) lst)))))))
(bubble-sort '(3 1 4 1 5 9 2 6 5 3 5)) ; 输出 (1 1 2 3 3 4 5 5 5 6 9)
相关问题
用LISP写一个冒泡排序
我不太擅长使用LISP,但是我可以给你提供一些建议:首先,创建一个用于存储要排序的列表的变量;其次,使用一个循环来遍历列表中的每个元素,并进行比较;最后,如果比较的元素顺序不正确,则交换位置,直到整个列表排序完成。
发那科编程把n个整数(n>=5)从小到大排列,依次打印出来
在发那科(FANUC)机器人编程中,如果你想对一组整数进行排序并打印,可以使用循环结构结合条件判断来实现这个功能。以下是一个简单的示例,假设我们有一个数组`int[] numbers`存储了n个整数:
```lisp
; 定义变量
VAR i=0, j=0, temp=0, n=n_size_of_array
; 对数组进行冒泡排序
WHILE i < n - 1 DO
FOR j = 0 TO n - i - 2 DO
IF numbers[j] > numbers[j+1] THEN
; 交换元素
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
END IF
NEXT j
i = i + 1 ; 冒泡一轮后,最大的数会沉到底部,所以内层循环减一
END WHILE
; 打印排序后的数组
FOR k=0 TO n-1 DO
DISPLAY(numbers[k]) ; FANUC系统中的打印指令,这里只是一个表示,实际取决于你如何与设备交互
END FOR
阅读全文