1、冒泡排序--
两层循环的run,有一个优化指出就是当后面的数打于前面一个是可以结束一个循环这样可以节省时间;
2、插入排序,最好情况为O(NlogN):
void insertSort(int *a,const int &length)
{
int n=length;
int j;
for(int i=1;i<n;i++)
{
int temp=a[i];
for( j=i;j>0;j--)
{
if(temp<a[j-1])
{
a[j]=a[j-1];
}
else
break;
}
a[j]=temp;
}
}
void SortHill(int *a,int length,int arrange)
{
int add=arrange/2;
while(add!=0)
{
for(int i=0;i+add<length;i++)
{
if(a[i]>a[i+add])
{
int temp=a[i+add];
a[i+add]=a[i];
a[i]=temp;
}
}
add=add/2;
}
}
void mergerSort(int *a ,int n1,int *b ,int n2,int *c)
{
int apre=0,cur=0,index=0;
for(;1;)
{
if(a[apre]>=b[cur])
{
c[index++]=b[cur];
cur++;
}
else
{
c[index++]=a[apre];
apre++;
}
if(apre==n1||cur==n2)
break;
}
while(apre<n1)
{
c[index++]=a[apre++];
}
while(cur<n2)
{
c[index++]=b[cur++];
}
}
void quickSort(int *a,int n)
{
int i=0,j=n-1;
while(i!=j)
{
if(a[i]>=a[j])
{
int temp=a[j];
a[j]=a[i];
a[i]=temp;
j--;
}
if(a[i]<a[j])
{
i++;
}
}
}
void bucketsort(int *a,int n,int *s)
{
for(int i=0;i<n;i++)
{
s[a[i]]+=1;
}
}