插入排序的泛型算法

//最近在研究STL和泛型,今后将试着写泛型程序,
//下面是我的第一个泛型程序,希望大家看了不要笑啊,
//如果那里不好,欢迎大家提出,多谢!
//我的第一个泛型算法,插入排序
//支持random access iterator,经试验对数组、vector 、list都可用
namespace ning
{
//此函数__sort,为内部函数,被sort调用,不对外提供接口
 template<class Iterator, class Distance, class T>
 void _sort(Iterator first, Distance len, Distance holeIndex, T key)
 {
  Distance pre;
  while (holeIndex < len)
  {
   key = *(first + holeIndex);
   pre = holeIndex - 1;
   while (pre >= Distance(0) && *(first + pre) > key)
   {
    *(first + pre + 1) = *(first + pre);
    --pre;
   }
   *(first + pre + 1) = key;
   ++holeIndex;
  }
 }
 
//此函数对外提供接口
 template<class Iterator>
 void sort(Iterator first, Iterator last)
 {
  typedef typename iterator_traits<Iterator>::value_type value_type;
  typedef typename iterator_traits<Iterator>::difference_type difference_type;
  //typedef typename iterator_traits<Iterator>::iterator_category iterator_category;
  value_type key(0);
  _sort(first, difference_type(last - first), difference_type(1), key);
 }
}
 
//欢迎大家提出宝贵意见啊 !
posted @ 2009-08-19 00:11  ningg  阅读(248)  评论(0)    收藏  举报