直接插入:
void insertsort(int *arr,int len)
{
int i,j,tmp;
for(i=1;i<len;++i)
{
tmp=arr[i];
for(j=i-1;i>=0;--j)
{
if(tmp>arr[j])
{
arr[j+1]=arr[j];
}
else
break;
}
arr[j+1]=tmp;
}
}
shell排序:
void shell(int *arr,int len,int gap)
{
int tmp=0;
int i,j;
for(i=gap;i<len;++i)
{
tmp=arr[i];
for(j=i-gap;j>=0;j-=gap)
{
if(arr[j]>tmp)
{
arr[j+gap]=arr[j];
}
else
break;
}
arr[j+gap]=tmp;
}
}
void shellsort(int *arr,int len)
{
int brr[]={5,3,1};
int lenb=sizeof(brr)/sizeof(brr[0]);
for(int i=0;i<lenb;++i)
{
shell(arr,len,brr[i]);
}
}
冒泡排序:
void bublesort(int*arr,int len)
{
int tmp=0;
for(int i=0;i<len;++i)
{
bool swap=false;
for(int j=0;j<len-1-i;++j)
{
if(arr[j]>arr[j+1])
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
swap=true;
}
}
if(!swap)
{
return;
}
}
}
直接选择:
void selectsort(int*arr,int len)
{
int tmp,i,j;
int min=0;
for(i=0;i<len-1;++i)
{
min=i;
for(j=i+1;j<len;++j)
{
if(arr[j]<arr[min])
{
tmp=arr[j];
arr[j]=arr[min];
arr[min]=tmp;
}
}
}
}