关于直接排序的分析

今天看了一下直接插入排序 我分享下我的想法吧

void InsertPass(SqList *L , int i )
{
	int j ; 
	//本算法实现将L->r[i]插入其中,并保持L->r[1...i]中记录按关
	for( i = 2 ; i<= L ->length ; ++i)
	{
		if(L->r[i].key<L->r[i-1].key) //判断是否是由小到大排序如果是则进行下一组
		{
			L->r[0] = L->r[i] ; // 复制为哨兵 目的是防止越界
			j = i - 1 ; // 与前一个数做比较
			while(L->r[0].key<L->r[j].key) //判断新进来的数应该放在哪(与以排好的数组的最后一个数比较)
			{
				L->r[j+1] = L->r[j] ; //如果一个数大于新进来的数则这个后移一位
				j--; //记住J--了 这时最后一个数已经比较完毕 到  前一个变为最后一个数了
			}
			L->r[j+1] = L->r[0] ;   // 由于前面的循环语句以L->r[0].key>=L->r[j].key结束 所以新进来的数因放在J+1这个数组下标中
		}
	}
}


阅读更多
想对作者说点什么? 我来说一句

排序的C代码

2013年03月25日 230KB 下载

没有更多推荐了,返回首页

关闭
关闭