lemon/radix_sort.h
changeset 2477 b5e1f017ff41
parent 2391 14a343be7a5a
child 2478 bf783151bc92
equal deleted inserted replaced
10:c7f21afadb0a 11:859fbd708c38
   137     int max_digit;
   137     int max_digit;
   138     Iterator it;
   138     Iterator it;
   139 
   139 
   140     mask = 0; max_digit = 0;
   140     mask = 0; max_digit = 0;
   141     for (it = first; it != cut; ++it) {
   141     for (it = first; it != cut; ++it) {
   142       if ((mask | functor(*it)) != ~0) {
   142       while ((mask | functor(*it)) != ~0) {
   143 	++max_digit;
   143 	++max_digit;
   144 	mask <<= 1; 
   144 	mask <<= 1; 
   145 	mask |= 1;
   145 	mask |= 1;
   146       }
   146       }
   147     }
   147     }
   148     radixIntroSort(first, cut, functor, 1 << max_digit);
   148     radixIntroSort(first, cut, functor, 1 << max_digit);
   149 
   149 
   150     mask = ~0; max_digit = 0;
   150     mask = ~0; max_digit = 0;
   151     for (it = cut; it != last; ++it) {
   151     for (it = cut; it != last; ++it) {
   152       if (mask & functor(*it)) {
   152       while (mask & functor(*it)) {
   153 	++max_digit;
   153 	++max_digit;
   154 	mask <<= 1;
   154 	mask <<= 1;
   155       }
   155       }
   156     }
   156     }
   157     radixIntroSort(cut, last, functor, 1 << max_digit);
   157     radixIntroSort(cut, last, functor, 1 << max_digit);