基本排序查找(模版)

来源:互联网 发布:霸屏软件 编辑:程序博客网 时间:2024/05/28 09:33

//插入排序
template<typename T>
void chaRu_paiXu(T a[],int n)
{
    T temp;
 int i,j;
 for(i=1;i<n;i++)
 {
     j = i;
  temp = a[j];
  while(j>0 && temp<a[j-1])
  {
      a[j] = a[j-1];
   j--;
  }
  a[j] = temp;
 }
}

template<typename T>
void Swap(T &x,T &y)
{
    T temp = x;
 x = y;
 y = temp;
}
//选择排序
template<typename T>
void xuanZe_paiXu(T a[],int n)
{
    int i,j,small;
 for(i=0;i<n-1;i++)
 {
     small = i;
  for(j=i+1;j<n;j++)
  {
      if(a[j]<a[small])
   {
      small = j;
   }
   Swap(a[i],a[small]);
  }
 }
}

//冒泡排序
template<typename T>
void maoPao_paiXu(T a[],int n)
{
    int i,j;
 for(i=0;i<n-1;i++)
 {
     for(j=0;j<n-i-1;j++)
  {
     if(a[j] >a[j+1])
     {
         Swap(a[j],a[j+1]);
     }
  }
 }
}
//顺序查找
template<typename T>
int shunXu_chaZhao(T a[],int n,T key)
{
 int i;
 for(i=0;i<n;i++)
 {
     if(a[i] == key)
   return i+1;
 }
 return 0;

}
//折半查找
template<class T>
int zheBan(T a[],int n,T key)
{
     int mid,low,high;
     T midValue;
     low = 0;
     high = n-1;
     while(low<=high)
     {
          mid = (low+high)/2;
          midValue = a[mid];
          if (midValue == key)
         {
              return mid + 1;
         }
         else if (midValue > key)
         {
              high = mid - 1;
         }
         else
         {
              low = mid + 1;
         }

    }
 return 0;
}
//英语实在不怎么地;

原创粉丝点击