首页 > 编程语言 > 详细

排序算法 -直接插入排序

时间:2016-03-16 13:46:47      阅读:226      评论:0      收藏:0      [点我收藏+]

插入排序:

  类似于玩扑克牌抓牌的动作

  从一个待排序的数组中拿出一个数字插入到一个已排好序的数组中,使得已排好序的数组仍是个有序的数组

 

代码如下:

//插入排序        
void insert_sort(int unsort[], int length)
{
    cout<<"插入排序:"<<endl;
    //从第二个数开始进行插入
    for(int i = 1; i < length; i++)
    {
        if(unsort[i]<unsort[i-1])
        {
            int temp = unsort[i];//哨兵元素
            int j = i;
            //查找在有序表的插入位置
            while(j >0 && unsort[j-1]>temp)
            {    
                unsort[j]=unsort[j-1];  
                j--;         //元素后移  
            }
            unsort[j] = temp;      //插入到正确位置  
        }
        cout<<""<<i<<"趟:";
        for(int k = 0; k < length; k++)
        {
            cout<<unsort[k]<<" ";
        }
        cout<<endl;
    }
}

 

注意:

  1.从第二个数字开始

  2.待排序的数字是个哨兵元素,用哨兵元素与排好序的元素从后往前进行对比,数字比哨兵元素大则该数字后移,直到找到第一个比哨兵元素小的,插入到该位置。

运行结果如下:

  技术分享

 

  

排序算法 -直接插入排序

原文:http://www.cnblogs.com/JuneXiangBlogs/p/5283001.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!