- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
template <typename T>
void sort( T array[], size_t length ) {
size_t left_index = 0;
size_t right_index = length - 1;
while ( left_index < right_index ) {
size_t min_index = min( array, left_index, right_index );
swap( array, min_index, left_index );
size_t max_index = max( array, left_index, right_index );
swap( array, max_index, right_index );
left_index++;
right_index--;
}
}
fixed
fixed
А вообще строки 10, 11 и 14 можно с чистой совестью выкинуть - алгоритм от этого не пострадает.
P.S. Может быть я не вижу каких-то других проблем?
И зачем нужен велосипед если есть быстрая сортировка стандартные алгоритмы.
Еще один плюс реализации с minmax - лучшее взаимодействие с кешем, что положительно скажется на эффективности при массивах больших чем кеш.
Но лучше не заниматься задрачиванием этой сортировки, а применить другой алгоритм с нормальной асимптотикой ;)
Во всей остальной части сортируются так только массивы int...
Вот к чему людей приводит желание излишней общности и незнание того, что фабрика велосипедов находится через дорогу.