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

    插入排序:每步将一个待排数按其大小插到前面已经排好的数列中,直到全部插完


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



    直接插入:

    当插入第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


    排序过程:





评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值