Changeset d0c91a6 for tests/searchsort.cfa
- Timestamp:
- Jan 15, 2019, 4:16:15 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- c802eb88
- Parents:
- 5e49e47 (diff), c9aba81 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/searchsort.cfa
r5e49e47 rd0c91a6 10 10 // Created On : Thu Feb 4 18:17:50 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Nov 6 18:00:38201813 // Update Count : 10 212 // Last Modified On : Thu Dec 20 22:49:46 2018 13 // Update Count : 108 14 14 // 15 15 16 16 #include <fstream.hfa> 17 #include <stdlib.hfa> 17 #include <stdlib.hfa> // bsearch, qsort 18 18 #include <stdlib.h> // C version of bsearch 19 19 … … 21 21 22 22 int main( void ) { 23 const unsignedint size = 10;23 const int size = 10; 24 24 int iarr[size]; 25 25 26 for ( i; 0u ~ size ) { 26 sout | nlOff; // turn off auto newline 27 28 for ( i; 0 ~ size ) { 27 29 iarr[i] = size - i; 28 30 sout | iarr[i] | ", "; 29 31 } // for 30 sout | endl | endl;32 sout | nl | nl; 31 33 32 34 // ascending sort/search by changing < to > 33 35 qsort( iarr, size ); 34 for ( i; 0 u~ size ) {36 for ( i; 0 ~ size ) { 35 37 sout | iarr[i] | ", "; 36 38 } // for 37 sout | endl;38 for ( i; 0 u~ size ) { // C version39 sout | nl; 40 for ( i; 0 ~ size ) { // C version 39 41 int key = size - i; 40 42 int * v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp ); 41 43 sout | key | ':' | *v | ", "; 42 44 } // for 43 sout | endl;45 sout | nl; 44 46 45 for ( i; 0 u~ size ) {47 for ( i; 0 ~ size ) { 46 48 int * v = bsearch( size - i, iarr, size ); 47 49 sout | size - i | ':' | *v | ", "; 48 50 } // for 49 sout | endl;50 for ( i; 0 u~ size ) {51 sout | nl; 52 for ( i; 0 ~ size ) { 51 53 unsigned int posn = bsearch( size - i, iarr, size ); 52 54 sout | size - i | ':' | iarr[posn] | ", "; 53 55 } // for 54 sout | endl | endl;56 sout | nl | nl; 55 57 56 58 // descending sort/search by changing < to > 57 for ( i; 0 u~ size ) {59 for ( i; 0 ~ size ) { 58 60 iarr[i] = i + 1; 59 61 sout | iarr[i] | ", "; 60 62 } // for 61 sout | endl;63 sout | nl; 62 64 { 63 int ?<?( int x, int y ) { return x > y; } 64 qsort( iarr, size ); 65 for ( i; 0u ~ size ) { 65 // redefinition of ?<? can't overlap the loop controls: 66 { 67 int (*?<?)(int, int) = ?>?; 68 qsort( iarr, size ); 69 } 70 for ( i; 0 ~ size ) { 66 71 sout | iarr[i] | ", "; 67 72 } // for 68 sout | endl; 69 for ( i; 0u ~ size ) { 73 sout | nl; 74 for ( i; 0 ~ size ) { 75 int (*?<?)(int, int) = ?>?; 70 76 int * v = bsearch( size - i, iarr, size ); 71 77 sout | size - i | ':' | *v | ", "; 72 78 } // for 73 sout | endl; 74 for ( i; 0u ~ size ) { 79 sout | nl; 80 for ( i; 0 ~ size ) { 81 int (*?<?)(int, int) = ?>?; 75 82 unsigned int posn = bsearch( size - i, iarr, size ); 76 83 sout | size - i | ':' | iarr[posn] | ", "; 77 84 } // for 78 85 } 79 sout | endl | endl;86 sout | nl | nl; 80 87 81 88 double darr[size]; 82 for ( i; 0 u~ size ) {89 for ( i; 0 ~ size ) { 83 90 darr[i] = size - i + 0.5; 84 91 sout | darr[i] | ", "; 85 92 } // for 86 sout | endl;93 sout | nl; 87 94 qsort( darr, size ); 88 for ( i; 0 u~ size ) {95 for ( i; 0 ~ size ) { 89 96 sout | darr[i] | ", "; 90 97 } // for 91 sout | endl;92 for ( i; 0 u~ size ) {98 sout | nl; 99 for ( i; 0 ~ size ) { 93 100 double * v = bsearch( size - i + 0.5, darr, size ); 94 101 sout | size - i + 0.5 | ':' | *v | ", "; 95 102 } // for 96 sout | endl;97 for ( i; 0 u~ size ) {103 sout | nl; 104 for ( i; 0 ~ size ) { 98 105 unsigned int posn = bsearch( size - i + 0.5, darr, size ); 99 106 sout | size - i + 0.5 | ':' | darr[posn] | ", "; 100 107 } // for 101 sout | endl | endl;108 sout | nl | nl; 102 109 103 110 struct S { int i, j; } sarr[size]; 104 111 int ?<?( S t1, S t2 ) { return t1.i < t2.i && t1.j < t2.j; } 105 112 ofstream & ?|?( ofstream & os, S v ) { return os | v.i | ' ' | v.j; } 106 for ( i; 0 u~ size ) {113 for ( i; 0 ~ size ) { 107 114 sarr[i].i = size - i; 108 115 sarr[i].j = size - i + 1; 109 116 sout | sarr[i] | ", "; 110 117 } // for 111 sout | endl;118 sout | nl; 112 119 qsort( sarr, size ); 113 for ( i; 0 u~ size ) {120 for ( i; 0 ~ size ) { 114 121 sout | sarr[i] | ", "; 115 122 } // for 116 sout | endl;117 for ( i; 0 u~ size ) {123 sout | nl; 124 for ( i; 0 ~ size ) { 118 125 S temp = { size - i, size - i + 1 }; 119 126 S * v = bsearch( temp, sarr, size ); 120 127 sout | temp | ':' | *v | ", "; 121 128 } // for 122 sout | endl;123 for ( i; 0 u~ size ) {129 sout | nl; 130 for ( i; 0 ~ size ) { 124 131 S temp = { size - i, size - i + 1 }; 125 132 unsigned int posn = bsearch( temp, sarr, size ); 126 133 sout | temp | ':' | sarr[posn] | ", "; 127 134 } // for 128 sout | endl | endl;135 sout | nl | nl; 129 136 { 130 unsignedint getKey( const S & s ) { return s.j; }131 for ( i; 0 u~ size ) {137 int getKey( const S & s ) { return s.j; } 138 for ( i; 0 ~ size ) { 132 139 sout | sarr[i] | ", "; 133 140 } // for 134 sout | endl;135 for ( i; 0 u~ size ) {141 sout | nl; 142 for ( i; 0 ~ size ) { 136 143 S * v = bsearch( size - i + 1, sarr, size ); 137 144 sout | size - i + 1 | ':' | *v | ", "; 138 145 } // for 139 sout | endl;140 for ( i; 0 u~ size ) {146 sout | nl; 147 for ( i; 0 ~ size ) { 141 148 unsigned int posn = bsearch( size - i + 1, sarr, size ); 142 149 sout | size - i + 1 | ':' | sarr[posn] | ", "; 143 150 } // for 144 sout | endl | endl;151 sout | nl | nl; 145 152 } 146 153 } // main
Note:
See TracChangeset
for help on using the changeset viewer.