插入排序

对于少量元素的排序,插入排序是一个有效的算法。插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后我们每次从桌上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。拿在左手上的牌总是排序好的。

#include <iostream>
#include <vector>
using namespace std;

vector<int> insert(vector<int>& nums);

int main()
{
    vector<int> nums;
    nums.push_back(3);
    nums.push_back(44);
    nums.push_back(38);
    nums.push_back(5);
    nums.push_back(47);
    nums.push_back(15);
    nums.push_back(36);
    nums.push_back(26);
    nums.push_back(27);
    nums.push_back(2);
    nums.push_back(46);
    nums.push_back(4);
    nums.push_back(19);
    nums.push_back(50);
    nums.push_back(48);
    insert(nums);
    int size=nums.size();
    for(int i=0;i<size;i++)
        cout<<nums[i]<<endl;
    return 0;
}

vector<int> insert(vector<int>& nums)
{
    int size=nums.size();
    for(int i=1;i<size;i++)
    {
        int temp=nums[i];
        for(int n=i-1,m=i;n>=0;n--,m--)
        {
            if(temp>=nums[n])
            {
                nums[n+1]=temp;
                break;
            }
            else
            {
                nums[m]=nums[n];
                if(n==0)
                    nums[n]=temp;
            }

        }
    }
    return nums;
}

 

posted @ 2018-05-22 19:25  LVVLY  阅读(143)  评论(0编辑  收藏  举报