排序算法之(3)--插入排序

介绍

这里介绍直接插入排序(Straight Insertion Sort),其基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。

即我们可以假设一开始第一个数是有序表,后面的都是无序的,插入排序的任务就是把后面的无序表一个个插入到前面来。

顾名思义,从名称上也可以知道它是一种插入排序的方法。我们来看直接插入排序法的代码。
这里写图片描述


代码

//辅助函数:交换两个变量
void swap(int*a,int*p)
{
    int temp = *a;
    *a = *p;
    *p = temp;
}

//插入排序
//从第1个数开始,往后开始遍历,第i个数一定要放到使得前i个数都变成有序的。
void insertSort(int* arr,int len)
{
    int i,j;
    for(i=0;i<len;i++)
    {
        for(j=i;j>0;j--)
        {
            if(arr[j]<arr[j-1])
            {
                swap(&arr[j],&arr[j-1]);
            }else
            {
                //已经不比那个元素小了就提前退出
                break;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/hiudawn/article/details/80377883