算法——插入排序

#include <iostream>

#include <cstdio>

using namespace std;

//插入排序

/*原理:像打扑克时整理手牌所做的事一样

在原来数组的基础上,以第一张手牌(认为已经排好序)为初始,依次插入后面的元素

*/

int  a[9]={0,1,54,77,24,97,32,8,21};  //说明:0号元素不计入待排序的元素内(对1到8号排序)

void fun()

{

    int j,now;  //设置在循环外

    for(int i=2;i<=8;i++)//从第二位开始(第一位只有一个,是有序的)

    {

        now=a[i];       //用now记录下来此时的a[i],因为在整体后移中a[i]会丢失

        for(j=i-1;j>=1;j--)

        {

            if(a[j]>now)       //比待插入元素大的全部后移一位,这里还得用now

                a[j+1]=a[j];    //右移(从后往前遍历)

            else break;     //此时找到位置

        }

        a[j+1]=now;

    }

}

int main()

{

    fun();

    for(int i=1;i<=8;i++)

        cout<<a[i]<<" ";

    return 0;

}

这篇文章,是又一个故事的结束...
lazy's story is continuing.
原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/13473776.html