排序--插入排序

      首先推荐这篇文章https://blog.csdn.net/qq_19782019/article/details/78021705,很明白的写出了两种排序算法的差距,更对两种不同插入排序的性能进行了分析。插入排序的思想是,一共N个数据,需要进行N-1趟排序组成。对从1到N-1趟,插入排序保证从位置0到位置P上的元素为已排序的状态。起初我们设置1为起始位置,也就是第一趟保证0-1的元素是已排序的,第二趟保证0-2的元素,每一趟将该趟位置的元素与该元素前面的每一个元素进行对比,寻找插入的位置。插入排序有可能提前结束。

//排序都按照从小到大的顺序排
//输入数组和数组大小
//插入排序的思想
//一般写法
void InsertSort(ElementType A[],int N)
{
	int i,j;
	ElementType temp;
	for(i=1;i<N;i++)
	{
		//temp=A[i]
		for(j=i;j>0&&A[i]<A[i-1];j--)
		{
			Swap(A[i],A[i-1]);//交换
			//A[i]=A[i-1];
		}
		
	}
}
//高级写法
void InsertSort(ElementType A[],int N)
{
	int i,j;
	ElementType temp;
	for(i=1;i<N;i++)
	{
		temp=A[i];
		for(j=i;j>0&&A[i-1]>temp;j--)
		{
			A[j]=A[j-1];
		}
		A[j]=temp;
	}
}

 

posted @ 2018-07-30 19:49  吾之求索  阅读(108)  评论(0)    收藏  举报