程序的灵魂----算法(二)

4、快速排序算法

(1)算法描述

从待排序序列中任意挑选一个元素,作为基准

将所有小于基准的元素放在基准之前,大于基准的元素放在基准之后,等于基准的元素放在基准之前或之后,这个过程称为分组

以递归的方式,分别对基准之前和基准之后的分组继续进行分组,知道每个分组内的元素个数不多于 1 个为止

(2)算法评价

平均时间复杂度:O(NlogN)

非稳定排序

若每次都能均匀分组,则排序速度最快

(3)快速排序算法实现

编程灵魂——算法(二)

编程灵魂——算法(二)

(4)快速排序说明

编程灵魂——算法(二)

5、归并排序算法

(1)算法描述

将待排序序列从中间划分为两个相等的子序列

以递归的方式分别对两个子序列进行排序

将两个有序的子序列合并成完整的序列

有序合并:

分配合并序列,其大小为两个有序序列大小之和

设定两个指针,分别指向两个有序序列的首元素

比较指针目标,娇笑着进入合并序列,指针后移

重复步骤3,直到某一指针到达序列末尾

将另一序列的剩余元素直接复制到合并序列末尾

(2)算法评价

平均时间复杂度:O(2NlogN)

稳定排序

对数据的有序性不敏感

非就地排序,需要辅助空间,不适合处理海量数据

(3)归并排序算法实现

编程灵魂——算法(二)

编程灵魂——算法(二)

(4)归并排序说明

编程灵魂——算法(二)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值