插入排序算法学习

插入排序就如同手里放了一堆纸牌,把纸牌从左到右进行排序。

insert_sort(A):

for:j<- 2 to  n;(n为数组A的长度)

     do key<-A[j];

         ( insert A[j] into the sorted sequence A[1.....j-1];)

          i <- j-1;

          while i>0 and A[i]>key

                 do A[i+1] <- A[i]

                      i <- i+1

           A[i+1] <- key;

#include<iostream>
using namespace std;
template<class T>
void insert_sort(T *a,int n)
{
	for(int i=1;i<n;++i)
	{
		T key=a[i];
		int j=i-1;
		while(j>=0&&a[j]>key)
		{
			a[j+1]=a[j];
			--j;
		}
		a[j+1]=key;
	}
}
int main()
{
	int a[]={5,2,4,6,1,3};
	insert_sort(a,6);
	for(int i=0;i<6;++i)
		cout<<a[i]<<" ";
}
这个算法是双层循环,所以复杂度为O(n2),因此插入排序适合对于规模较小的数据进行排序。

posted @ 2010-10-12 16:31  hailong  阅读(106)  评论(0编辑  收藏  举报