$ od -c -N 50000 [qv]<IDL>koto>VECTOR-SORTER!1
0000000 ( D E F I N E - F I L E - I N F
0000020 O 247 P A C K A G E " I N T E
0000040 R L I S P " 247 R E A D T A B L
0000060 E " X C L " 247 B A S E 1 0
0000100 ) \r 006 001 ( F I L E C R E A T E D
0000120 " 1 6 - N o v - 8 6 1 5 : 3
0000140 1 : 3 6 " 006 004 { Q V } < P E D
0000160 E R S E N > L I S P > V E C T O
0000200 R - S O R T E R . \ ; 7 006 001 1
0000220 4 5 1 3 \r \r | c
0000240 h a n g e s | | t o : | (
0000260 F U N C T I O N S I N D E X -
0000300 V E C T O R - S O R T V E C T
0000320 O R - K T H - I N D E X ) \r \r
0000340 | p r e v i o u s |
0000360 | d a t e : | " 9 - N o v -
0000400 8 6 1 8 : 3 4 : 2 9 " { Q V
0000420 } < P E D E R S E N > L I S P >
0000440 V E C T O R - S O R T E R . \ ;
0000460 6 ) \r \r \r ; C o p y r i g h t
0000500 ( c ) 1 9 8 6 b y X e r
0000520 o x C o r p o r a t i o n .
0000540 A l l r i g h t s r e s e
0000560 r v e d . \r \r ( P R E T T Y C O
0000600 M P R I N T V E C T O R - S O
0000620 R T E R C O M S ) \r \r ( R P A Q
0000640 Q 006 002 V E C T O R - S O R T E
0000660 R C O M S 006 001 ( ( F U N C T I
0000700 O N S G E N E R I C - I N D E
0000720 X - I N S E R T I O N - S O R T
0000740 G E N E R I C - I N D E X - Q
0000760 S F E N C E \r
0001000
0001020 G E N E R I C
0001040 - I N D E X - Q U I C K S O R T
0001060 G E N E R I C - I N S E R T I
0001100 O N - S O R T G E N E R I C -
0001120 Q S F E N C E \r
0001140
0001160 G E N E R I
0001200 C - Q U I C K S O R T I N D E
0001220 X - V E C T O R - S O R T Q U
0001240 I C K - S T E P V E C T O R -
0001260 K T H - E L E M E N T \r
0001300
0001320 V E
0001340 C T O R - K T H - I N D E X V
0001360 E C T O R - S O R T ) \r
0001400
0001420 ( P R O P F I L E
0001440 T Y P E V E C T O R - S O R T
0001460 E R ) \r
0001500 ( D
0001520 E C L A R E \ : D O N T E V A
0001540 L @ L O A D D O E V A L @ C O
0001560 M P I L E D O N T C O P Y (
0001600 L O C A L V A R S . T ) ) )
0001620 ) \r \r ( C L : D E F U N 006 002 G
0001640 E N E R I C - I N D E X - I N S
0001660 E R T I O N - S O R T 006 001 ( V
0001700 E C T O R I N D I C E S C O
0001720 M P A R E F N L O W E R U P
0001740 P E R ) \r
0001760
*
0002040 006 006 ( * | ; ; | " S o
0002060 r t e l e m e n t s ( L O W
0002100 E R . . U P P E R ) o f
0002120 t h e 1 - d i m e n s i o n
0002140 a l C M L A r r a y A R R A
0002160 Y u s i n g t h e o r d e
0002200 r i n g g i v e n b y C O
0002220 M P A R E F N . A R R A Y
0002240 i s s o r t e d i n p l a
0002260 c e , i . e . d e s t r u
0002300 c t i v e l y . N O a r g
0002320 u m e n t c h e c k i n g !
0002340 R e t u r n s A R R A Y .
0002360 I N T E N D E D F O R F E W
0002400 E R T H A N 2 0 E L E M E
0002420 N T S , U S E Q u i c k S o
0002440 r t F O R L A R G E R P R
0002460 O B L E M S ! " ) 006 001 \r (
0002500 C L : D O ( ( I ( C L : 1 +
0002520 L O W E R ) \r
0002540 ( C L : 1 + I ) )
0002560 \r I T H -
0002600 I N D E X I T H - E L E M E N
0002620 T ) \r ( ( E
0002640 Q L I U P P E R ) \r
0002660 I N D I C E S ) \r
0002700 ( S E T Q
0002720 I T H - I N D E X ( C L : A R
0002740 E F I N D I C E S I ) ) \r
0002760 ( S E T Q I
0003000 T H - E L E M E N T ( C L : A
0003020 R E F V E C T O R I T H - I
0003040 N D E X ) ) \r
0003060 ( C L : D O ( ( J I ( C
0003100 L : 1 - J ) ) \r
0003120 T E M P )
0003140 \r
0003160 ( ( O R ( E Q L J L O
0003200 W E R ) \r
0003220 ( N O T
0003240 ( C L : F U N C A L L C O M P
0003260 A R E F N I T H - E L E M E N
0003300 T ( C L : A R E F V E C T O
0003320 R ( S E T Q T E M P \r
0003340
*
0003440 ( C L : A
0003460 R E F I N D I C E S \r
0003500
*
0003620 ( C L : 1 - J ) ) ) ) ) ) )
0003640 \r
0003660 ( C L : S E T F ( C L :
0003700 A R E F I N D I C E S J ) \r
0003720
0003740 I T H - I N D
0003760 E X ) ) \r
0004000 ( C L : S E T F (
0004020 C L : A R E F I N D I C E S
0004040 J ) \r
0004060 T E M P )
0004100 ) ) ) \r \r \r ( C L : D E F U N
0004120 006 002 G E N E R I C - I N D E X -
0004140 Q S F E N C E 006 001 ( V E C T O
0004160 R I N D I C E S C O M P A R
0004200 E F N L O W E R U P P E R )
0004220 \r
0004240
*
0004300 006
0004320 006 ( * | ; ; | " I d e n t i
0004340 f y t h e p a r t i t i o n
0004360 i n g e l e m e n t a s t
0004400 h e m e d i a n - o f - t h r
0004420 e e e s t i m a t e o f t
0004440 h e m e d i a n . R e f e
0004460 r e n c e : S e d g e w i c k
0004500 , R . ` I m p l e m e n t
0004520 i n g Q u i c k s o r t P r
0004540 o g r a m s ' C A C M v o l
0004560 . 2 1 n o . 1 0 p p
0004600 . 8 4 7 - - 8 5 7 . " ) 006 001
0004620 \r ( C L : I F ( > ( -
0004640 U P P E R L O W E R ) \r
0004660 1 ) \r
0004700 ( L E T ( ( U
0004720 P P E R - I N D E X ( C L : 1
0004740 - U P P E R ) ) \r
0004760 ( M I D D L
0005000 E - I N D E X
0005020
0005040 006 006 ( * \ ; \r
0005060 006 001
0005100
*
0005140 006 006 " T h i s i s
0005160 a c t u a l l y a d i v i d
0005200 e b y t w o w i t h t r
0005220 u n c a t i o n " ) 006 001 \r
0005240
0005260 ( C L : A S H ( + L
0005300 O W E R U P P E R ) \r
0005320
0005340 - 1 ) ) \r
0005360 (
0005400 L O W E R - P L U S 1 - I N D E
0005420 X ( C L : 1 + L O W E R ) )
0005440 ) \r
0005460 ( C L : R O T A T E F ( C L
0005500 : A R E F I N D I C E S M I
0005520 D D L E - I N D E X ) \r
0005540
0005560 ( C L : A R E F I N D I C
0005600 E S L O W E R - P L U S 1 - I
0005620 N D E X ) ) \r
0005640 ( C L : I F ( C L
0005660 : F U N C A L L C O M P A R E
0005700 F N ( C L : A R E F V E C T
0005720 O R ( C L : A R E F I N D I
0005740 C E S U P P E R - I N D E X )
0005760 ) \r
0006000 (
0006020 C L : A R E F V E C T O R (
0006040 C L : A R E F I N D I C E S
0006060 L O W E R - P L U S 1 - I N D E
0006100 X ) ) ) \r
0006120 ( C L : R
0006140 O T A T E F ( C L : A R E F
0006160 I N D I C E S L O W E R - P L
0006200 U S 1 - I N D E X ) \r
0006220
0006240 ( C L : A R E F
0006260 I N D I C E S U P P E R - I
0006300 N D E X ) ) ) \r
0006320 ( C L : I F ( C
0006340 L : F U N C A L L C O M P A R
0006360 E F N ( C L : A R E F V E C
0006400 T O R ( C L : A R E F I N D
0006420 I C E S U P P E R - I N D E X
0006440 ) ) \r
0006460
0006500 ( C L : A R E F V E C T O R
0006520 ( C L : A R E F I N D I C E S
0006540 L O W E R ) ) ) \r
0006560
0006600 ( C L : R O T A T E F ( C L :
0006620 A R E F I N D I C E S L O W
0006640 E R ) \r
0006660
0006700 ( C L : A R E F I N D I C E
0006720 S U P P E R - I N D E X ) ) )
0006740 \r
0006760 ( C L : I F ( C L : F U N C A
0007000 L L C O M P A R E F N ( C L
0007020 : A R E F V E C T O R ( C L
0007040 : A R E F I N D I C E S L O
0007060 W E R ) ) \r
0007100
0007120 ( C L : A R E F V E C T
0007140 O R ( C L : A R E F I N D I
0007160 C E S L O W E R - P L U S 1 -
0007200 I N D E X ) ) ) \r
0007220 (
0007240 C L : R O T A T E F ( C L : A
0007260 R E F I N D I C E S L O W E
0007300 R - P L U S 1 - I N D E X ) \r
0007320
0007340 ( C L :
0007360 A R E F I N D I C E S L O W
0007400 E R ) ) ) ) ) ) \r \r \r ( C L : D
0007420 E F U N 006 002 G E N E R I C - I
0007440 N D E X - Q U I C K S O R T 006 001
0007460 ( V E C T O R I N D I C E S
0007500 C O M P A R E F N L O W E R
0007520 U P P E R ) \r
0007540
*
0007620 006 006 ( * | ; ; |
0007640 \r 006 001 006 006 " R e f e r e n
0007660 c e : S e d g e w i c k , R
0007700 . ` I m p l e m e n t i n g
0007720 Q u i c k s o r t P r o g r
0007740 a m s ' C A C M v o l .
0007760 2 1 n o . 1 0 p p .
0010000 8 4 7 - - 8 5 7 . " ) 006 001 \r
0010020 ( C L : W H E N ( > ( -
0010040 U P P E R L O W E R ) \r
0010060 1 0 ) \r
0010100 ( G E N E R
0010120 I C - I N D E X - Q S F E N C E
0010140 V E C T O R I N D I C E S
0010160 C O M P A R E F N L O W E R
0010200 U P P E R ) \r
0010220
*
0010300 006 006 ( * | ; ; | \r 006
0010320 001 006 006 " P e r f o r m
0010340 t h e p a r t i t i o n i n
0010360 g . A t t h i s p o i n t
0010400 a r r a y [ ( 1 + L O W E R
0010420 ) ] < = a r r a y [ L O W E
0010440 R ] < = a r r a y [ ( 1 -
0010460 U P P E R ) ] " ) 006 001 \r
0010500 ( Q U I C K - S T E
0010520 P V E C T O R ( C L : A R E
0010540 F V E C T O R ( C L : A R E
0010560 F I N D I C E S I N D E X )
0010600 ) \r
0010620 ( C O N D \r
0010640 ( ( >
0010660 ( - J L O W E R ) \r
0010700
0010720 ( - U P P E R I )
0010740 ) \r
0010760 ( G E N E R I C -
0011000 I N D E X - Q U I C K S O R T
0011020 V E C T O R I N D I C E S C
0011040 O M P A R E F N L O W E R J
0011060 ) \r
0011100 ( G E N E R I C -
0011120 I N D E X - Q U I C K S O R T
0011140 V E C T O R I N D I C E S C
0011160 O M P A R E F N I U P P E R
0011200 ) ) \r
0011220 ( T ( G E N E R
0011240 I C - I N D E X - Q U I C K S O
0011260 R T V E C T O R I N D I C E
0011300 S C O M P A R E F N I U P
0011320 P E R ) \r
0011340 ( G E N
0011360 E R I C - I N D E X - Q U I C K
0011400 S O R T V E C T O R I N D I
0011420 C E S C O M P A R E F N L O
0011440 W E R J ) ) ) ) ) ) \r \r \r ( C
0011460 L : D E F U N 006 002 G E N E R I
0011500 C - I N S E R T I O N - S O R T
0011520 006 001 ( V E C T O R C O M P A
0011540 R E F N L O W E R U P P E R
0011560 ) \r
0011600
*
0011660 006 006 ( * | ; ; | " S o r t
0011700 e l e m e n t s ( L O W E R
0011720 . . U P P E R ) o f t h
0011740 e 1 - d i m e n s i o n a l
0011760 C M L A r r a y A R R A Y u
0012000 s i n g t h e o r d e r i n
0012020 g g i v e n b y C O M P A
0012040 R E F N . A R R A Y i s
0012060 s o r t e d i n p l a c e ,
0012100 i . e . d e s t r u c t i
0012120 v e l y . N O a r g u m e
0012140 n t c h e c k i n g ! R e t
0012160 u r n s A R R A Y . I N T
0012200 E N D E D F O R F E W E R
0012220 T H A N 2 0 E L E M E N T S
0012240 , U S E Q u i c k S o r t
0012260 F O R L A R G E R P R O B L
0012300 E M S ! " ) 006 001 \r ( C L :
0012320 D O ( ( I ( C L : 1 + L O
0012340 W E R ) \r
0012360 ( C L : 1 + I ) ) \r
0012400 I T H - E L E
0012420 M E N T ) \r
0012440 ( ( E Q L I U P P E R ) \r
0012460 V E C T O R
0012500 ) \r ( S E T
0012520 Q I T H - E L E M E N T ( C
0012540 L : A R E F V E C T O R I )
0012560 ) \r ( C L :
0012600 D O ( ( J I ( C L : 1 -
0012620 J ) ) \r
0012640 T E M P ) \r
0012660 ( ( O
0012700 R ( E Q L J L O W E R ) \r
0012720
0012740 ( N O T ( C L : F
0012760 U N C A L L C O M P A R E F N
0013000 I T H - E L E M E N T ( S E
0013020 T Q T E M P ( C L : A R E F
0013040 V E C T O R ( C L : 1 - J
0013060 ) ) ) ) ) \r
0013100 ) \r
0013120
0013140 ( C L : S E T F ( C L : A R E
0013160 F V E C T O R J ) \r
0013200
0013220 I T H - E L E M E N T
0013240 ) ) \r
0013260 ( C L : S E T F ( C L
0013300 : A R E F V E C T O R J ) \r
0013320
0013340 T E M P ) ) ) )
0013360 \r \r \r ( C L : D E F U N 006 002 G
0013400 E N E R I C - Q S F E N C E 006 001
0013420 ( V E C T O R C O M P A R E
0013440 F N L O W E R U P P E R )
0013460 006 006 ( * | ; ; | " I
0013500 d e n t i f y t h e p a r t
0013520 i t i o n i n g e l e m e n t
0013540 a s t h e m e d i a n - o
0013560 f - t h r e e e s t i m a t e
0013600 o f t h e m e d i a n .
0013620 R e f e r e n c e : S e d g
0013640 e w i c k , R . ` I m p l
0013660 e m e n t i n g Q u i c k s o
0013700 r t P r o g r a m s ' C A C
0013720 M v o l . 2 1 n o .
0013740 1 0 p p . 8 4 7 - - 8 5 7
0013760 . " ) 006 001 \r ( C L : I F
0014000 ( > ( - U P P E R L O W E
0014020 R ) \r
0014040 1 ) \r ( L E
0014060 T ( ( U P P E R - I N D E X
0014100 ( C L : 1 - U P P E R ) ) \r
0014120 (
0014140 M I D D L E - I N D E X
0014160
0014200 006 006 ( *
0014220 \ ; \r 006 001
0014240
*
0014300 006 006 " T h i
0014320 s i s a c t u a l l y a
0014340 d i v i d e b y t w o w i
0014360 t h t r u n c a t i o n " ) 006
0014400 001 \r
0014420 ( C L : A S H
0014440 ( + L O W E R U P P E R )
0014460 \r
0014500 -
0014520 1 ) ) \r
0014540 ( L O W E R - P L U S 1
0014560 - I N D E X ( C L : 1 + L O
0014600 W E R ) ) ) \r
0014620 ( C L : R O T A T E
0014640 F ( C L : A R E F V E C T O
0014660 R M I D D L E - I N D E X ) \r
0014700
0014720 ( C L : A R E F V
0014740 E C T O R L O W E R - P L U S
0014760 1 - I N D E X ) ) \r
0015000 ( C L : I F
0015020 ( C L : F U N C A L L C O M P
0015040 A R E F N ( C L : A R E F V
0015060 E C T O R U P P E R - I N D E
0015100 X ) \r
0015120
0015140 ( C L : A R E F V E C T O R
0015160 L O W E R - P L U S 1 - I N D E
0015200 X ) ) \r
0015220 ( C L : R O
0015240 T A T E F ( C L : A R E F V
0015260 E C T O R L O W E R - P L U S
0015300 1 - I N D E X ) \r
0015320
0015340 ( C L : A R E F V
0015360 E C T O R U P P E R - I N D E
0015400 X ) ) ) \r
0015420 ( C L : I F ( C L : F
0015440 U N C A L L C O M P A R E F N
0015460 ( C L : A R E F V E C T O R
0015500 U P P E R - I N D E X ) \r
0015520
0015540 ( C L : A
0015560 R E F V E C T O R L O W E R
0015600 ) ) \r
0015620 ( C L : R O T
0015640 A T E F ( C L : A R E F V E
0015660 C T O R L O W E R ) \r
0015700
0015720 ( C L : A R E
0015740 F V E C T O R U P P E R - I
0015760 N D E X ) ) ) \r
0016000 ( C L : I F ( C
0016020 L : F U N C A L L C O M P A R
0016040 E F N ( C L : A R E F V E C
0016060 T O R L O W E R ) \r
0016100
0016120 ( C L : A R E F
0016140 V E C T O R L O W E R - P L
0016160 U S 1 - I N D E X ) ) \r
0016200
0016220 ( C L : R O T A T E F ( C
0016240 L : A R E F V E C T O R L O
0016260 W E R - P L U S 1 - I N D E X )
0016300 \r
0016320 ( C
0016340 L : A R E F V E C T O R L O
0016360 W E R ) ) ) ) ) \r V E C T
0016400 O R ) \r \r \r ( C L : D E F U N
0016420 006 002 G E N E R I C - Q U I C K S
0016440 O R T 006 001 ( V E C T O R C O
0016460 M P A R E F N L O W E R U P
0016500 P E R ) 006 006 ( * | ; ; |
0016520 \r 006 001 006 006 " R e f e r e
0016540 n c e : S e d g e w i c k ,
0016560 R . ` I m p l e m e n t i n
0016600 g Q u i c k s o r t P r o g
0016620 r a m s ' C A C M v o l .
0016640 2 1 n o . 1 0 p p .
0016660 8 4 7 - - 8 5 7 . " ) 006 001 \r
0016700 ( C L : W H E N ( > ( -
0016720 U P P E R L O W E R ) \r
0016740 1 0 )
0016760 \r ( G E N E
0017000 R I C - Q S F E N C E V E C T
0017020 O R C O M P A R E F N L O W
0017040 E R U P P E R ) 006 006
0017060 ( * | ; ; | \r 006 001
0017100 006 006 " P e r f o r m t h e p
0017120 a r t i t i o n i n g . A t
0017140 t h i s p o i n t a r r a y
0017160 [ ( 1 + L O W E R ) ] < =
0017200 a r r a y [ L O W E R ] < =
0017220 a r r a y [ ( 1 - U P P E R )
0017240 ] " ) 006 001 \r
0017260 ( Q U I C K - S T E P V E C T
0017300 O R ( C L : A R E F V E C T
0017320 O R I N D E X ) \r
0017340 ( C O N D
0017360 \r
0017400 ( ( > ( - J L O
0017420 W E R ) \r
0017440 ( -
0017460 U P P E R I ) ) \r
0017500 (
0017520 G E N E R I C - Q U I C K S O R
0017540 T V E C T O R C O M P A R E
0017560 F N L O W E R J ) \r
0017600
0017620 ( G E N E R I C - Q U I C K S
0017640 O R T V E C T O R C O M P A
0017660 R E F N I U P P E R ) ) \r
0017700
0017720 ( T ( G E N E R I C - Q
0017740 U I C K S O R T V E C T O R
0017760 C O M P A R E F N I U P P E
0020000 R ) \r
0020020 ( G E N E R
0020040 I C - Q U I C K S O R T V E C
0020060 T O R C O M P A R E F N L O
0020100 W E R J ) ) ) ) ) ) \r \r \r ( C
0020120 L : D E F U N 006 002 I N D E X -
0020140 V E C T O R - S O R T 006 001 ( V
0020160 E C T O R & O P T I O N A L
0020200 ( C O M P A R E F N # ' < ) \r
0020220
*
0020260 I N D I C E S ) ( C L :
0020300 I F ( N O T ( C L : V E C T
0020320 O R P V E C T O R ) ) \r
0020340
*
0020420 ( C L : E R R O R " N o t a
0020440 v e c t o r : ~ S " V E C
0020460 T O R ) ) \r
0020500
*
0020540 ( L E T ( ( L E N G T H
0020560 ( C L : L E N G T H V E C T O
0020600 R ) ) ) \r
0020620
*
0020660 ( C O N D \r
0020700
*
0020760 ( ( N U L L I N D I C E S ) \r
0021000
*
0021060 ( S E T Q I N D I C
0021100 E S ( C L : M A K E - A R R A
0021120 Y L E N G T H ) ) ) \r
0021140
*
0021220 ( ( N O T ( A N D ( C L : V
0021240 E C T O R P I N D I C E S ) \r
0021260
*
0021340 (
0021360 E Q ( C L : L E N G T H I N
0021400 D I C E S ) \r
0021420
*
0021500 L E N G T H
0021520 ) ) ) \r
0021540
*
0021600 ( C L : E R R
0021620 O R " I l l e g a l I n d e
0021640 x v e c t o r : ~ s " I N
0021660 D I C E S ) ) ) \r
0021700
*
0021740 ( C L : D O
0021760 T I M E S ( I L E N G T H )
0022000 \r
0022020
*
0022060 ( C L : S E T
0022100 F ( C L : A R E F I N D I C
0022120 E S I ) \r
0022140
*
0022220 I ) ) \r
0022240
*
0022300 ( L E T (
0022320 ( L O W E R 0 ) \r
0022340
*
0022420 ( U P P E R L E N G T H ) )
0022440 \r
0022460
*
0022520 ( G E N E R I C -
0022540 I N D E X - Q U I C K S O R T
0022560 V E C T O R I N D I C E S \r
0022600
*
0022660 C O M
0022700 P A R E F N L O W E R U P P
0022720 E R ) \r
0022740
*
0023000 ( G E N E R
0023020 I C - I N D E X - I N S E R T I
0023040 O N - S O R T V E C T O R I
0023060 N D I C E S \r
0023100
*
0023160 C O M P A R E F N L
0023200 O W E R U P P E R ) \r
0023220
*
0023300 I N D I C E S ) ) ) \r \r \r (
0023320 D E F M A C R O 006 002 Q U I C K
0023340 - S T E P 006 001 ( V E C T O R
0023360 A C C E S S O R - F O R M & R
0023400 E S T F O R M S ) \r ` (
0023420 L E T ( ( I ( C L : 1 + L
0023440 O W E R ) ) \r
0023460 ( J ( C L : 1 - U P P E R
0023500 ) ) \r ( X L
0023520 , ( C L : S U B S T ' L O W
0023540 E R ' I N D E X A C C E S S
0023560 O R - F O R M ) ) ) \r
0023600 ( C L : L O O P ( C L
0023620 : L O O P ( C L : I N C F I
0023640 ) \r
0023660 ( C L : I
0023700 F ( N O T ( C L : F U N C A
0023720 L L C O M P A R E F N , ( C
0023740 L : S U B S T ' I ' I N D E
0023760 X A C C E S S O R - F O R M )
0024000 X L ) ) \r
0024020
0024040 ( R E T U R N N I
0024060 L ) ) ) \r
0024100 ( C L : L O O P ( C
0024120 L : D E C F J ) \r
0024140
0024160 ( C L : I F ( N O T ( C L
0024200 : F U N C A L L C O M P A R E
0024220 F N X L , ( C L : S U B S T
0024240 ' J ' I N D E X A C C E S
0024260 S O R - F O R M ) ) ) \r
0024300
0024320 ( R E T U R
0024340 N N I L ) ) ) \r
0024360 ( C O N D \r
0024400
0024420 ( ( > J I ) \r
0024440 (
0024460 C L : R O T A T E F ( C L : A
0024500 R E F , V E C T O R I ) \r
0024520
0024540 ( C L : A R
0024560 E F , V E C T O R J ) ) ) \r
0024600
0024620 ( T ( R E T U R N N I
0024640 L ) ) ) ) \r (
0024660 C L : R O T A T E F ( C L : A
0024700 R E F , V E C T O R L O W E
0024720 R ) \r
0024740 ( C L : A R E F , V E C
0024760 T O R J ) ) \r
0025000 , @ F O R M S ) ) \r \r \r ( C L
0025020 : D E F U N 006 002 V E C T O R -
0025040 K T H - E L E M E N T 006 001 ( V
0025060 E C T O R K & O P T I O N A
0025100 L ( C O M P A R E F N # ' <
0025120 ) ) \r
0025140
*
0025220 006 006 ( * | ; ; | " P a r t
0025240 i a l l y s o r t t h e e
0025260 l e m e n t s o f t h e 1
0025300 - d i m e n s i o n a l C M L
0025320 A r r a y X s o t h a t
0025340 t h e o r d e r s t a t i s
0025360 t i c d e s i g n a t e d b
0025400 y K i s l o c a t e d c
0025420 o r r e c t l y i n X .
0025440 K m u s t b e a Z E R O
0025460 - B A S E D F I X N U M I N
0025500 D E X i n t o X . X i
0025520 s s o r t e d i n p l a c
0025540 e , i . e . d e s t r u c
0025560 t i v e l y . R e t u r n s
0025600 X { K } " ) 006 001 \r ( C L
0025620 : I F ( N O T ( C L : V E C
0025640 T O R P V E C T O R ) ) \r
0025660 ( C L : E R R O
0025700 R " N o t a v e c t o r :
0025720 ~ S " V E C T O R ) ) \r
0025740 ( L E T ( ( L E N G T H (
0025760 C L : L E N G T H V E C T O R
0026000 ) ) ) \r ( C L :
0026020 I F ( N O T ( < - 1 K
0026040 L E N G T H ) ) \r
0026060 ( C L : E R R O
0026100 R " K o u t o f b o u n
0026120 d s : ~ S " K ) ) \r
0026140 ( L E T ( ( L O W E R
0026160 0 ) \r
0026200 ( U P P E R L E N G T H )
0026220 ) \r (
0026240 C L : L O O P ( C L : W H E N
0026260 ( < ( - U P P E R L O W
0026300 E R ) \r
0026320
0026340 1 0 ) \r
0026360
0026400 ( G E N E R I C - I N
0026420 S E R T I O N - S O R T V E C
0026440 T O R C O M P A R E F N L O
0026460 W E R U P P E R ) \r
0026500
0026520 ( R E T U R N
0026540 ( C L : A R E F V E C T O R
0026560 K ) ) ) \r
0026600 ( G E N E R I
0026620 C - Q S F E N C E V E C T O R
0026640 C O M P A R E F N L O W E R
0026660 U P P E R ) \r
0026700 ( Q U I
0026720 C K - S T E P V E C T O R (
0026740 C L : A R E F V E C T O R I
0026760 N D E X ) \r
0027000
0027020 ( C O N D \r
0027040
0027060 ( ( E Q L K J ) \r
0027100
0027120 (
0027140 R E T U R N ( C L : A R E F
0027160 V E C T O R K ) ) ) \r
0027200
0027220 ( ( < K
0027240 J ) \r
0027260
0027300 ( C L : S E T Q U P P E R
0027320 J ) ) \r
0027340
0027360 ( T ( C L : S E T Q L
0027400 O W E R ( C L : 1 + J ) ) )
0027420 ) ) ) ) ) ) \r \r \r ( C L : D E F
0027440 U N 006 002 V E C T O R - K T H -
0027460 I N D E X 006 001 ( V E C T O R
0027500 K & O P T I O N A L ( C O M
0027520 P A R E F N # ' < ) \r
0027540
0027560 I N
0027600 D I C E S )
0027620 006 006 ( * | ;
0027640 ; | " P a r t i a l l y s o
0027660 r t t h e e l e m e n t s
0027700 o f t h e 1 - d i m e n s i
0027720 o n a l C M L A r r a y X
0027740 s o t h a t t h e o r d e
0027760 r s t a t i s t i c d e s i
0030000 g n a t e d b y K i s l
0030020 o c a t e d c o r r e c t l y
0030040 i n X . K m u s t b
0030060 e a Z E R O - B A S E D F
0030100 I X N U M I N D E X i n t o
0030120 X . X i s s o r t e d
0030140 i n p l a c e , i . e .
0030160 d e s t r u c t i v e l y .
0030200 R e t u r n s X { K } " ) 006
0030220 001 \r ( C L : I F ( N O T
0030240 ( C L : V E C T O R P V E C
0030260 T O R ) ) \r
0030300 ( C L : E R R O R " N o t a
0030320 v e c t o r : ~ S " V E C
0030340 T O R ) ) \r ( L E T ( (
0030360 L E N G T H ( C L : L E N G T
0030400 H V E C T O R ) ) ) \r
0030420 ( C L : I F ( N O T
0030440 ( < - 1 K L E N G T H ) )
0030460 \r
0030500 ( C L : E R R O R " K o u t
0030520 o f b o u n d s : ~ S "
0030540 K ) ) \r ( C O N
0030560 D \r ( ( N
0030600 U L L I N D I C E S ) \r
0030620 ( S E T Q I
0030640 N D I C E S ( C L : M A K E -
0030660 A R R A Y L E N G T H ) ) ) \r
0030700 ( ( N O T
0030720 ( A N D ( C L : V E C T O R
0030740 P I N D I C E S ) \r
0030760
0031000 ( E Q ( C L : L E N G T H
0031020 I N D I C E S ) \r
0031040
0031060 L E N G T H ) ) ) \r
0031100 ( C L : E R R
0031120 O R " I l l e g a l I n d e
0031140 x v e c t o r : ~ s " I N
0031160 D I C E S ) ) ) \r
0031200 ( C L : D O T I M E S ( I
0031220 L E N G T H ) \r
0031240 ( C L : S E T F
0031260 ( C L : A R E F I N D I C E S
0031300 I ) \r
0031320 I ) ) \r
0031340 ( L E T ( ( L O W
0031360 E R 0 ) \r
0031400 ( U P P E R L E N G T
0031420 H ) ) \r
0031440 ( C L : L O O P ( C L : W H
0031460 E N ( < ( - U P P E R L
0031500 O W E R ) \r
0031520
0031540 1 0 ) \r
0031560
0031600 ( G E N E R I C -
0031620 I N D E X - I N S E R T I O N -
0031640 S O R T V E C T O R I N D I
0031660 C E S C O M P A R E F N L O
0031700 W E R U P P E R ) \r
0031720
0031740 ( R E T U R N
0031760 ( C L : A R E F I N D I C E S
0032000 K ) ) ) \r
0032020 ( G E N E R
0032040 I C - I N D E X - Q S F E N C E
0032060 V E C T O R I N D I C E S
0032100 C O M P A R E F N L O W E R
0032120 U P P E R ) \r
0032140 ( Q U I C
0032160 K - S T E P V E C T O R ( C
0032200 L : A R E F V E C T O R ( C
0032220 L : A R E F I N D I C E S I
0032240 N D E X ) ) \r
0032260
0032300 ( C O N D \r
0032320
0032340 ( ( E Q L K J )
0032360 \r
0032400
0032420 ( R E T U R N ( C L : A R E F
0032440 V E C T O R K ) ) ) \r
0032460
0032500 ( ( < K
0032520 J ) \r
0032540
0032560 ( C L : S E T Q U P P E
0032600 R J ) ) \r
0032620
0032640 ( T ( C L : S E T Q
0032660 L O W E R ( C L : 1 + J ) )
0032700 ) ) ) ) ) ) ) \r \r \r ( C L : D E
0032720 F U N 006 002 V E C T O R - S O R
0032740 T 006 001 ( V E C T O R & O P T
0032760 I O N A L ( C O M P A R E F N
0033000 # ' < ) ) 006 006 ( *
0033020 | ; ; | " S o r t t h e 1
0033040 - d i m e n s i o n a l C M L
0033060 A r r a y A R R A Y u s i n
0033100 g t h e o r d e r i n g g
0033120 i v e n b y C O M P A R E F
0033140 N . A R R A Y i s s o r
0033160 t e d i n p l a c e , i .
0033200 e . d e s t r u c t i v e l
0033220 y . R e t u r n s A R R A
0033240 Y . " ) 006 001 \r ( C L : I F
0033260 ( N O T ( C L : V E C T O R
0033300 P V E C T O R ) ) \r
0033320 ( C L : E R R O R "
0033340 N o t a v e c t o r : ~ S
0033360 " V E C T O R ) ) \r ( L
0033400 E T ( ( L O W E R 0 ) \r
0033420 ( U P P E R ( C
0033440 L : L E N G T H V E C T O R )
0033460 ) ) \r ( G E N E
0033500 R I C - Q U I C K S O R T V E
0033520 C T O R C O M P A R E F N L
0033540 O W E R U P P E R ) \r
0033560 ( G E N E R I C - I N S
0033600 E R T I O N - S O R T V E C T
0033620 O R C O M P A R E F N L O W
0033640 E R U P P E R ) \r
0033660 V E C T O R ) ) \r \r \r ( P U
0033700 T P R O P S 006 002 V E C T O R -
0033720 S O R T E R F I L E T Y P E 006
0033740 001 C L : C O M P I L E - F I L
0033760 E ) \r ( D E C L A R E \ : D O
0034000 N T E V A L @ L O A D D O E V
0034020 A L @ C O M P I L E D O N T C
0034040 O P Y \r ( D E C L A R E \ :
0034060 D O E V A L @ C O M P I L E D
0034100 O N T C O P Y \r \r ( L O C A L V
0034120 A R S . T ) \r ) \r ) \r ( P U
0034140 T P R O P S V E C T O R - S O
0034160 R T E R C O P Y R I G H T (
0034200 " X e r o x C o r p o r a t i
0034220 o n " 1 9 8 6 ) ) \r ( D E C L
0034240 A R E \ : D O N T C O P Y \r
0034260 ( F I L E M A P ( N I L ) )
0034300 ) \r S T O P \r
0034307