Working on a stock market model I'd need some alternative to the Netlogo 
sort algorithm:

extensions [matrix]
globals [ii jj comp mip ord ordm ordl ordr]

to setup
  print ("  Problem: The sort algorithms provided by Netlogo cuts out 
identical list elements upon sorting ") 
  print ("  input : ord  is a list to be sorted  ")   
  print ("  output: ordm is a nested list of 1. Sorted List   2. 
Corresponding Input" )
  print("  ")
end ;setup
to go
  list-in
  arrange
end
to list-in ; example :
  set ord [ 5 7 3 45 23 54 1 4 8 9 0 2 6 3 89 78 43 -5]
end
to arrange
  let ltr length ord                   ;  type ("ltr   ")  print ltr
  let r1 n-values ltr [ i -> i ]         type ("r1    ") print r1
  set ordm matrix:make-constant 2 ltr 0;  type ("ordm  ") print ordm
  matrix:set-row ordm 0 ord
  matrix:set-row ordm 1 r1           ;      print"ordm Matrix in " print 
matrix:pretty-print-text ordm
  ;set ord  matrix:to-row-list ordm       ;  type("ord  List    ") print ord
  set ordr ordm
  set ii 0
  set jj 0
  set comp matrix:get ordr 0 jj
  set mip min matrix:get-row ordr 0
    while [jj < ltr]
    [
;      type("ordm  in    ") print ordm
;      type("ordr  in    ") print ordr
      set comp matrix:get ordr 0 jj
      set mip min matrix:get-row ordr 0
;      type ("comp in ") print comp
;      type ("mip  in ") print mip
      ifelse comp = mip
        [ if jj != 0 [ matrix:swap-columns ordm  ii  (jj + ii)]
          set jj 0
          if ii < ltr - 1 [set ii ii + 1]
          let lr length matrix:get-row ordr 0 ;  type ("lr ") print lr
          ifelse ii < ltr and lr > 1 [set ordr matrix:submatrix ordm 0 ii 1 
ltr ]
          [let ords matrix:to-row-list ordm ; type("ords  ") print ords
          set jj ltr]; end if
      ] [ set jj jj + 1 ] ; end else
    ] ; end while jj

      set ordl matrix:get-row ordm 0
      type ("ord  :in  unsorted list  ") print ord
      type( "ordl :out sorted list    ") print ordl
      print "   "
      print "ordm Matrix out compared with corresponding input " print 
matrix:pretty-print-text ordm
end   ; arrange

-- 
You received this message because you are subscribed to the Google Groups 
"netlogo-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to netlogo-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/netlogo-devel/783dc6ca-90c2-4944-af3d-db2bd4a94f4cn%40googlegroups.com.

Reply via email to