您的位置:首页 > 其它

软考二进宫-排序算法-直接插入、直接选择

2016-05-19 09:49 218 查看
    插入排序:每步将一个待排数按其大小插到前面已经排好的数列中,直到全部插完

    插入排序主要有直接插入和希尔排序两种

    直接插入:

    当插入第i个记录时,R1,R2,R3,,,Ri-1均已排好,因此,将第i个记录Ri依次与R1,R2,R3,,,Ri-1进行比较,找到合适位置。

    此算法简单明了,但速度较慢

    如对数列57,68,59,52排序,

    第一步:R1为57,已排好序,比较R2和R1,即比较68和57,68>57,无需移动位置

    第二步:比较R3,即59,59分别和57、68比较,因为57<59<68,所以59插到57之后,68之前,数列变为

                     57,59,68,52

    第三步:比较52和前面三个数,确定它的位置在57之前,所以,数列变为52,57,59,68,此时,排序完成

    选择排序基本思想:每一步都从待排数列选出最小的记录,按顺序存放在已排序的记录序列后面

    常见选择排序:直接选择,堆排序

    直接选择:



    在所有记录中选出最小的数,把它与第一个记录交换,然后在其余的记录中选出最小的数,与第2个记录交换,依次类推,直到所有记录排完为止

    无论待排序列如何,在第i趟排序中选出最小数,需做n-i次比较,因此,总的比较次数为n(n-1)/2=O(n2)。

    当待排序为正序时,移动次数为0

    反序时,每趟均需执行交换操作,总的移动次数取最大值3(n-1)

 

    直接选择排序的平均时间复杂度为O(n2),是不稳定的

    对于待排数列:34 56 12 23 67 98 34 67

    排序过程:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  软考