Talk:Sorting algorithms/Stooge sort: Difference between revisions
No edit summary |
(problem with lisp code) |
||
Line 1: | Line 1: | ||
Im having a bit of an issue with syntax apparently. I have the latest code here: |
|||
I was wondering if any of you can help me. I have implemented a few sorting algorithms in other languages but doing something as simple as the stooge sort seems to be confusing me. I am going this implementation in NewLisp for practice. I like the language so far but i seem to hit a snag in this latest code: |
|||
<lang |
<lang Newlisp> |
||
(define (stoogesort L left right)(if (> ( L left ) ( L right )) (swap ( L left) ( L right ))) |
|||
( |
(define (stoogesort L left right) |
||
(println "list : " L " left: " left " right: " right " calc: " (- right (/ (- right (+ left 1))3))) |
|||
;;(round (/ right 3)) |
|||
( |
(if (> ( L left ) ( L right )) (swap (L left) (L right) |
||
( |
(if (< (- left right) 1) (print "hello") |
||
(stoogesort(L left (- right ( |
(stoogesort(L left (- right (/ (- right (+ left 1))3)) |
||
⚫ | |||
⚫ | |||
⚫ | |||
</lang> |
|||
⚫ | |||
******************* |
|||
I get the following as output: |
|||
> |
|||
<lang NewLISP> |
|||
(lambda (L left right) |
|||
(if (> (L left) (L right)) |
|||
(swap (L left) (L right))) |
|||
(if (>= (+ left 1) right) |
|||
L) |
|||
(stoogesort (L left (- right (round (/ right 3))))) |
|||
⚫ | |||
⚫ | |||
ERR: illegal parameter type in function > : left |
|||
called from user defined function stoogesort |
|||
called from user defined function stoogesort |
|||
</lang> |
</lang> |
||
It seems to never get to the recursive step. I'm wondering why as I did some other tests to see whats going on. I feel extremely dumb right now with such an algorithm.... |
|||
--Michael Chrisco |
--Michael Chrisco |
Revision as of 06:11, 5 August 2010
Im having a bit of an issue with syntax apparently. I have the latest code here: <lang Newlisp>
(define (stoogesort L left right) (println "list : " L " left: " left " right: " right " calc: " (- right (/ (- right (+ left 1))3))) (if (> ( L left ) ( L right )) (swap (L left) (L right) (if (< (- left right) 1) (print "hello") (stoogesort(L left (- right (/ (- right (+ left 1))3)) (stoogesort(L (+ left (/ (- right (+ left 1))3)) right (stoogesort(L left (- right (/ (- right (+ left 1))3)))))))))))L)
(stoogesort (list 7 3 2 3 4 0) 0 5)
</lang> It seems to never get to the recursive step. I'm wondering why as I did some other tests to see whats going on. I feel extremely dumb right now with such an algorithm.... --Michael Chrisco