[c++]常见的几个排序算法 - 蘭陵N散記

JerryXia 发表于 , 阅读 (0)

前一段时间需要任职资格考试,于是又拿起丢了几年的数据结构书看了看,温习了一下常见的几个排序算法。今天特把我写的学习代码贴了出来。排序的算法常见有插入排序,选择排序与交换排序,较复杂一点还有归并排序与基数排序,概念性的东西我就不多说了,大家可以找一本严老师数据结构书看看。读大学时不觉得怎么样,现在再来看看,又结合这几年的编程经验,通过C++风格函数子造了一遍轮子。

排序算法

  • 先来一个排序中的比较函数子,实现是左值小于右值。
 template<typename T>struct CmpFuctor{  bool operator()(const T& lhs, const T& rhs)  {    return lhs < rhs;  }};
  • 交换排序中用到的交换两个元素的函数。
template<typename T>void swap(T* lhs, T* rhs){  T tmp = *lhs;  *lhs = *rhs;  *rhs = tmp;}
  • 排序前后,我们自然要观察前后元素的顺序,那也少了下面这个函数。即遍历整个数组,再回调函数指针func,把元素通过引用传递出来。
template<typename T>void traverse(T* pArray, const int size, void (*func)(T&) ){  for(int idx =0; idx< size; idx++)  {    func(pArray[idx]);  }