template<class T> //冒泡排序算法
void MaoPaoSort(T arr[],int size)
{
for(int i=0; i<size-1 ;i++)
{
for(int j = 0;j<size-i-1 ;j++)
{
if( arr[j]>arr[j+1])
{
T t = arr[j];
arr[j] = arr[j+1];
arr[j+1]= t;
}
}
}
}
template<class T> //选择排序算法
void selectSort(T arr[],int size)
{
for(int i=0;i<size-1;i++)
{
for(int j=size-1;j>i;j--)
{
if(arr[j]<arr[j-1])
{
T t = arr[j];
arr[j]=arr[j-1];
arr[j-1]=t;
}
}
}
}
template <class T> //插入排序算法
void insertSort(T arr[],int size)
{
for(int i =1; i<size; i++)
{
for(int j=i;(j>0&&arr[j]<arr[j-1]);j--)
{
T t = arr[j];
arr[j]=arr[j-1];
arr[j-1]= t;
}
}
}
template<class T> //快速排序算法
void quickSort(T arr[],int left,int right)
{
if(left<right)
{
int i = left;
int j = right;
T x = arr[left];
while(i<j && arr[j]>x)
j--;
if(i<j)
arr[i++]=arr[j];
while(i<j && arr[i]<x)
i++;
if(i<j)
arr[j--]=arr[i];
arr[i] = x;
quickSort(arr,i+1,right);
quickSort(arr,left,i-1);
}
}
template<class T> //shell排序算法
void shellSort(T arr[],int size)
{
int h,i,j;
T temp;
for(h = size/2; h>0 ; h/=2)
{
for(i=h;i<size;i++)
{
temp = arr[i];
for(j=i-h;j>=0&&arr[j]>temp;j-=h)
{
arr[j+h] = arr[j];
}
arr[j+h] = temp;
}
}
}
void MaoPaoSort(T arr[],int size)
{
for(int i=0; i<size-1 ;i++)
{
for(int j = 0;j<size-i-1 ;j++)
{
if( arr[j]>arr[j+1])
{
T t = arr[j];
arr[j] = arr[j+1];
arr[j+1]= t;
}
}
}
}
template<class T> //选择排序算法
void selectSort(T arr[],int size)
{
for(int i=0;i<size-1;i++)
{
for(int j=size-1;j>i;j--)
{
if(arr[j]<arr[j-1])
{
T t = arr[j];
arr[j]=arr[j-1];
arr[j-1]=t;
}
}
}
}
template <class T> //插入排序算法
void insertSort(T arr[],int size)
{
for(int i =1; i<size; i++)
{
for(int j=i;(j>0&&arr[j]<arr[j-1]);j--)
{
T t = arr[j];
arr[j]=arr[j-1];
arr[j-1]= t;
}
}
}
template<class T> //快速排序算法
void quickSort(T arr[],int left,int right)
{
if(left<right)
{
int i = left;
int j = right;
T x = arr[left];
while(i<j && arr[j]>x)
j--;
if(i<j)
arr[i++]=arr[j];
while(i<j && arr[i]<x)
i++;
if(i<j)
arr[j--]=arr[i];
arr[i] = x;
quickSort(arr,i+1,right);
quickSort(arr,left,i-1);
}
}
template<class T> //shell排序算法
void shellSort(T arr[],int size)
{
int h,i,j;
T temp;
for(h = size/2; h>0 ; h/=2)
{
for(i=h;i<size;i++)
{
temp = arr[i];
for(j=i-h;j>=0&&arr[j]>temp;j-=h)
{
arr[j+h] = arr[j];
}
arr[j+h] = temp;
}
}
}