您的位置:首页 > 其它

内部排序—直接插入排序

2017-06-02 09:03 197 查看
直接插入排序是一种简单的排序方法,具体做法是:在插入第i个记录时,R1、R2…Ri-1已经排好序,这时候将Ri的关键字Ki依次与关键字Ki-1、Ki-2等进行比较,从而找到应该插入的位置并将Ri插入,插入位置及其后的记录依次向后移动。

直接插入排序法在最好的情况下(待排序列已按照关键码有序)每趟排序只需要做1次比较而且不需要移动元素,因此n个元素排序时的总比较次数为n-1次,总的移动次数为0次。在最坏的情况下(元素已经逆序排序),在进行第j趟排序时,待插入的记录需要和前面的每个记录进行比较,比较次数为j(设置监视哨时,包括与监视哨的一次比较)或j-1(不设置监视哨),移动次数为j+1。 直接插入排序时一种稳定的排序算法,时间复杂度为O(n2)。在排序过程中仅需要一个元辅助空间,空间复杂度为O(1)。

[code]///
/// 直接插入排序 不带哨兵排序
/// 思想:默认认为第一个是有序的,从待排序的数组中依次取一个元素和已排序的比较
///
/// 待排序数组
///
private int[] InsertSort(int[] arrData)
{
int temp=0;
//从第二个元素开始循环
for(int i=1;i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  插入排序