c语言中数组排序里的插空排序法是什么意思
插入排序法是一种数组元素排序方法,冒泡法也是。
两者是不同的排序,两者时间复杂度为n的平方,而冒泡法更直观一点。
插入排序就相当于打牌,假如你手里的牌是从小到大排好序的,那么你每摸一张牌,你就会根据这张牌的大小寻找这张牌应该插入的位置,然后插进去。
选择排序就是你一下获得了所有的牌,这些牌是无序的,这时,你选择一个最大的牌放在前面,然后再从后面的牌选择最大的放在第2的位置,依此类推。
插入排序是这样实现的:
首先新建一个空列表,用于保存已排序的有序数列(我们称之为有序列表)。
从原数列中取出一个数,将其插入有序列表中,使其仍旧保持有序状态。
重复2号步骤,直至原数列为空。
插入排序的平均时间复杂度为平方级的,效率不高,但是容易实现。它借助了逐步扩大成果的思想,使有序列表的长度逐渐增加,直至其长度等于原列表的长度。
voidInsertSort(int*pData,intCount)
{
intiTemp;
intiPos;
for(inti=1;i<Count;i++)
{
iTemp=pData[i];//保存要插入的数
iPos=i-1;//被插入的数组数字个数
while((iPos>=0)&&(iTemp<pData[iPos]))
{//从最后一个(最大数字)开始对比,大于它的数字往后移位
pData[iPos+1]=pData[iPos];
iPos--;
}
pData[iPos+1]=iTemp;//插入数字的位置
}
}
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇