关闭

关于直接排序的分析

262人阅读 评论(0) 收藏 举报

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

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这个数组下标中
		}
	}
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:278次
    • 积分:12
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档
    阅读排行
    评论排行