- 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--;
}
}
HaskellGovno 05.07.2012 21:28 # +6
roman-kashitsyn 05.07.2012 22:26 # +3
fixed
bormand 05.07.2012 22:28 # −1
fixed
bormand 05.07.2012 21:33 # 0
А вообще строки 10, 11 и 14 можно с чистой совестью выкинуть - алгоритм от этого не пострадает.
P.S. Может быть я не вижу каких-то других проблем?
Fai 05.07.2012 21:47 # 0
И зачем нужен велосипед если есть быстрая сортировка стандартные алгоритмы.
bormand 05.07.2012 21:49 # +1
Fai 05.07.2012 21:51 # +1
bormand 05.07.2012 22:07 # 0
Еще один плюс реализации с minmax - лучшее взаимодействие с кешем, что положительно скажется на эффективности при массивах больших чем кеш.
Но лучше не заниматься задрачиванием этой сортировки, а применить другой алгоритм с нормальной асимптотикой ;)
Fai 05.07.2012 22:27 # −1
Во всей остальной части сортируются так только массивы int...
Вот к чему людей приводит желание излишней общности и незнание того, что фабрика велосипедов находится через дорогу.
TarasB 06.07.2012 18:41 # −2
bormand 06.07.2012 19:21 # +2
Fai 06.07.2012 19:24 # −3
vistefan 07.07.2012 20:18 # +3