直接插入排序

  插入排序主要思想是:把要排序的数字插入到已经排好的数据中。例如12356是已经排好的序,我们将4插入到他们中,时插入之后也是排好序的。这里显而易见是插入到3的后面。变为123456。实现思路:插入排序就是先是一个有序的数据,然后把要插入的数据插到指定的位置,而排序首先给的就是无序的,我们怎么确定先得到一个有序的数据呢?答案就是:如果只有一个,当然是有序的咯。我们先拿一个出来,他是有序的,然后把数据一个一个插入到其中,那么插入之后是有序的,所以直到最后都是有序的。。哈哈。结果就出来了!
当然在写的时候还是有一个技巧的,不需要开额外的数组,下标从第二个元素开始遍历知道最后一个,然后插入到前面已经有序的数据中。这样就不会浪费空间了。插入排序用处还是很多的,特别是链表中,因为链表是指针存放的,没有数组那么好准确的用下标表示,插入是简单有效的方法。

#include <iostream>

using namespace std;

void InsertionSort(int unsorted[],int N)
{
    int j,p,temp;
    for(p=1;p < N;p++){
     
        temp = unsorted[p];
        for(j = p;j>0&&unsorted[j-1]>temp;j--)
            unsorted[j] = unsorted[j-1];
        unsorted[j] = temp;
    
    
    }
}

int main()
{
    int a[5] = {1,8,6,7,14};
    InsertionSort(a,5);
    for(int i=0;i<5;i++){

        cout<<a[i]<<endl;
    }

    return 0;
}

 

posted on 2013-09-12 19:47  Freshman11  阅读(233)  评论(0编辑  收藏  举报

导航