삽입정렬을 lisp로 구현하는 도중에 코드가 틀려서 질문드립니다.
아래와 같은 c언어 코드를 lisp로 구현하고자 합니다.
#include <stdio.h>
int main(){
int arr[5]={5, 16, 1, 4, 12};
int temp;
for(int i=0;i<4;i++){
int j=i-1;
while((arr[j] > arr[j+1])&&(j>=0)){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
j–;
}
}
for(int i=0;i<5;i++){
printf(“%dn”,arr[i]);
}
return 0;
}
아래는 제가 lisp 코드를 작성한 것입니다.
(setq temp 0)
;temp에 0을 받는다.
(defun insertsort(list 83 72 65 54 47 33 29 11))
;이런 식으로 배열을 일단 정의한다.
(loop for i from 0 to 7
(setq j (i-1)) ;변수 j와 i를 1로 정의한다.
(while(>(nth j insertsort)(nth j+1 insertsort))and (> j -1)
;while((arr[j] > arr[j+1])&&(j>=0)) 을 적는다.
;여기서는 그냥 > j -1을 적는다.
(setq temp (nth j insertsort))
;temp=arr[j]
(setq (nth j insertsort)(nth j+1 insertsort))
;arr[j]=arr[j+1]
(setq (nth j+1 insertsort) temp)
;arr[j+1]=temp
(- j 1)
)
;j–
)
;문제의 배열 개수가 8개이므로 이런 식으로 for문을 지정한다.
(loop for i from 0 to 7
setq(a (nth i insertsort))
(print(i))
)
(print(insertsort))
어떤 부분이 잘못되었는지 궁금합니다.
답변해주시면 감사드리겠습니다.
1 답변