一、直接插入排序
void sort(int *a,int n)
{
for(int i=1;i<n;i++)
{
int j=i-1,k=a[i];
while(j>=0 && a[j]>k)
{
a[j+1]=a[j];
j--;
}
a[j+1]=k;
}
}
二、嵌套循环
void sort(int *a,int n)
{
for(int i=1;i<n;i++)
{//从位置1开始,分别和前n-i个位置比较
for(int j=i-1;j>=0;j--)
{
if(a[j]>a[i])
{
int k=a[i];
a[i]=a[j];
a[j]=k;
i--;
}
}
}
}
三、递归插入排序
void sort(int x[],int n)
{
if(n==2)
{//递归终止条件。当数组中只有两个元素时,对这两个元素进行排序
if(x[0]>x[1])
{
int tmp=x[0];
x[0]=x[1];
x[1]=tmp;
}
}
else if(n==1)//如果数组中只有一个元素,就不用排序
return;
else
{
sort(x,n-1);
int i=n-1;
while((x[i]<x[i-1])&&(i>0))
{
int temp=x[i];
x[i]=x[i-1];
x[i-1]=temp;
i=i-1;
}
}
}