Post Reply 
(28S) Sorting lists
12-12-2013, 02:26 PM (This post was last modified: 06-15-2017 01:59 PM by Gene.)
Post: #1
(28S) Sorting lists
Hi everyone,

This small program takes a list in the stack and returns the sorted list using the bubble sort algorithm.

Code:

« DUP SIZE
  IF DUP 1 > THEN 2 
    FOR i 1 i 1 -
      FOR j DUP j GET OVER j 1 + GET 
        IF DUP2 > THEN ROT j ROT PUT j 1 + ROT PUT
        ELSE DROP2 END
      NEXT
    - 1 STEP
  ELSE DROP
END
 »
'T.BUL'
Bubble sort is not very efficient as sorting method, but the algorithm is simple to understand.

Another method more efficient is the selection sort:
Code:

« DUP SIZE
  IF DUP 1 > THEN 2
    FOR i DUP 1 GET 1 → aide k
       « 2 i FOR j DUP j GET IF DUP aide > THEN
         'aide' STO j 'k' STO ELSE DROP END
         NEXT k OVER i GET PUT i aide PUT 
       »
     -1 STEP
  ELSE DROP
  END
 »
'T.SEL'

One more, with insertion method this time !
Code:

« DUP SIZE
  IF DUP 1 > THEN → n
   « 2 n FOR i DUP i GET i 1 -
        → aide j
        « WHILE DUP j 1 MAX GET aide > j 1 ≥ AND
           REPEAT j 1 - 'j' STO
           END
           IF j i 1 - < THEN DUP 1 j SUB aide +
             OVER j 1 + i 1 - SUB + OVER i 1 + n SUB +
             SWAP DROP
           END
        »
     NEXT 
   » 
  ELSE DROP END
 »
'T.INS'


Damien.
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
(28S) Sorting lists - Damien - 12-12-2013 02:26 PM
RE: [HP 28S] Sorting lists - C.Ret - 02-16-2014, 08:19 PM
RE: [HP 28S] Sorting lists - Thomas Klemm - 02-17-2014, 09:29 PM



User(s) browsing this thread: 1 Guest(s)