当前位置:新励学网 > 秒知问答 > c语言中数组排序里的插空排序法是什么意思

c语言中数组排序里的插空排序法是什么意思

发表时间:2024-07-27 18:43:06 来源:网友投稿

插入排序法是一种数组元素排序方法,冒泡法也是。

两者是不同的排序,两者时间复杂度为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;//插入数字的位置

}

}

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!