C++ 插入排序的三种方法

一、直接插入排序

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;
        }
    }
}
发布了11 篇原创文章 · 获赞 0 · 访问量 314

猜你喜欢

转载自blog.csdn.net/qiankendeNMY/article/details/105430273