快速排序(算法) 2007-12-17 10:52

昨天接到人力资源部一个求助,让出三套C/C++能力考试题。我知道是针对那批新员工的,其实我感觉那批新员工的基础还是需要加强的。我看他们的写的一个项目的时候,大部分代码都是抄过来的,没有一点自己的元素在里边。这样做的结果会阻碍他们的自由发展空间,但是让他们做估计做不出来,没有人带他们是一个很重要的原因。不说那个了,先说我们出的题吧。其中有一个需要排序的,我们用惯了冒泡排序(效率比较低的)这次出题不能再用它了,那样多丢人吧,用快速排序吧,快速排序我好久没有用过了。但是选择了它我总的写出来吧不然考那些新员工就没有意义了。我采用的是模板思路。

template <typename Type>
int Swap(Type Num[], int low, int hight)// 返回中间数
{
  Type pivotkey = Num[low];//比较数值
  while(low < hight)
  {  
  while (low<hight && Num[hight]>=pivotkey) --hight;
  Num[low] = Num[hight];// 最小的放在前边
  while (low<hight && Num[low]<=pivotkey) ++low;
  Num[hight] = Num[low];// 最大的放在后边
   }
   Num[low] = pivotkey;
  return low;
}
// 递归调用对分的段进行排序
template <typename Type>
void QSort(Type Num[], int low, int hight)
{
 register int i = 0;
 if (low < hight)
 {
  i = Swap(Num, low, hight);//取的中轴数据
  QSort(Num, low, i-1);//对小的进行排序
  QSort(Num, i+1,hight);//对打的进行排序
 }
} 代码不多耶。(*^__^*) 嘻嘻……

猜你喜欢

转载自www.cnblogs.com/lu-ping-yin/p/10988686.html