直接插入排序
插入排序主要思想是:把要排序的数字插入到已经排好的数据中。例如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 阅读(236) 评论(0) 编辑 收藏 举报