Changeset 2479:221cfaf118a6 in lemon-0.x for lemon/radix_sort.h
- Timestamp:
- 09/28/07 14:42:14 (17 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@3318
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/radix_sort.h
r2478 r2479 138 138 Iterator it; 139 139 140 mask = 0; max_digit = 0;140 mask = ~0; max_digit = 0; 141 141 for (it = first; it != cut; ++it) { 142 while ((mask | functor(*it)) != ~0) { 143 ++max_digit; 144 mask <<= 1; 145 mask |= 1; 146 } 147 } 148 radixIntroSort(first, cut, functor, 1 << max_digit); 149 150 mask = ~0; max_digit = 0; 151 for (it = cut; it != last; ++it) { 152 while (mask & functor(*it)) { 142 while ((mask & functor(*it)) != mask) { 153 143 ++max_digit; 154 144 mask <<= 1; 155 145 } 156 146 } 147 radixIntroSort(first, cut, functor, 1 << max_digit); 148 149 mask = 0; max_digit = 0; 150 for (it = cut; it != last; ++it) { 151 while ((mask | functor(*it)) != mask) { 152 ++max_digit; 153 mask <<= 1; mask |= 1; 154 } 155 } 157 156 radixIntroSort(cut, last, functor, 1 << max_digit); 158 157 } … … 161 160 void radixUnsignedSort(Iterator first, Iterator last, Functor functor) { 162 161 163 Value mask = ~0;162 Value mask = 0; 164 163 int max_digit = 0; 165 164 166 165 Iterator it; 167 166 for (it = first; it != last; ++it) { 168 while ( mask & functor(*it)) {167 while ((mask | functor(*it)) != mask) { 169 168 ++max_digit; 170 mask <<= 1; 169 mask <<= 1; mask |= 1; 171 170 } 172 171 }
Note: See TracChangeset
for help on using the changeset viewer.