插入排序

来源:互联网 发布:有没有抢购软件 编辑:程序博客网 时间:2024/06/15 19:20

原理分析(升序)

假定数组第一个数是有序的,从数组下标1开始遍历比较后面的数值。如果遍历到的数x小于排在它前面的数则交换他们,再比较x和x前面的数…直到x前面再也没有比它大的数了,这时x就移动到了有序队列的合适位置。上述比较称为插入。
《算法导论》里的比喻很合适:“插入排序就像玩扑克牌时的抓牌一样,抓一张牌,就把它插在已有扑克牌的合适位置”
注:从数组的第二个数(下标1)开始遍历就是假设第一个数已经是有序队列了。后面通过遍历逐渐增加有序队列长度。直到完成排序。

void sort3(int arr[],int length){    int i , j ;    //定义i为数组下标,从下标1开始遍历    for(i = 1; i < length; i++)    {        for(j = i; j >= 0; j--)        {            //判断,if成立就交换数值,不成立则表示已经在合适位置了,直接break            if(arr[j-1] > arr[j])            {                int a = arr[j-1];                arr[j-1] = arr[j];                arr[j] = a;            }            else            {                break;            }        }    }}
原创粉丝点击