$ 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