とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

またバブルソート

前回のバブルソートの改善版。最後に交換した場所を覚えるようにしてる。
んで,C++ 的にも改善。今回はフォワードイテレータんでいけるはず。

#include<algorithm>

 template<typename ForwardIterator> inline
  void bubble_sort(ForwardIterator first, ForwardIterator last)
 {
  for(ForwardIterator current, next, last_candidate; first != last;){
   for(current = next = last_candidate = first; ++next != last; ++current)
    if(*next < *current){
     ::std::iter_swap(next, current);
     last_candidate = next;
    }
   last = last_candidate;
  }
 }