数据结构导论——排序

插入排序

直接插入排序

依次将每个记录插入到一个已经排好序的有序表中;类比图书馆整理书的过程;
时间复杂度O(n²);空间复杂度为O(l);算法稳定;
不适用于排序记录数量很大的情况;

交换排序

冒泡排序

类比水中冒泡;
时间复杂度为O(n²);算法稳定;

快速排序

平均时间性能:快速排序方法最佳;时间复杂度为O(nlog2n);对拍好序列的输入序列,算法效率较低;近似于O(n²);算法不稳定;

选择排序

直接选择排序

在第i次选择操作中,通过n-1次键值间比较,从n-i+1个记录中选出键值最小的记录,并和第i(1<=i<=n-1)个记录交换;
时间复杂度为O(n²);算法不稳定;不适于n较大的情况;

堆排序

两种方式:最大堆和最小堆;
堆排序平均时间为O(n log2n);最坏的情况下也是O(n log2n);不稳定;仅需要一个辅助存储空间(用来记录大小)

归并排序

二路归并

将两个有序表合并成一个有序表;n;n/2;n/4;两两合并最终合并成1个有序序列;
时间复杂度为O( n log2n);稳定;所需辅助存储量较多;


排序分析

时间复杂度分析:
直接插入、冒泡、直接选择算法简单的时间复杂度为O(n²);
快速排序、堆排序、二路归并排序算法相对复杂的时间复杂度为O(n log2n);

稳定性分析:
快速排序、直接选择排序:有可能出现45、_45;_45、45的情况,算法不稳定;
堆排序:树形图可分析出不稳定;
直接插入、冒泡、二路归并图改动不大、稳定有规律的算法稳定;

辅助存储量分析:
二路归并所需最多;堆排序只需要一个辅助存储量;

n较小时选择简单的排序算法;n较大且无序时选择时间复杂度较低的算法;(O(n log2n))时间复杂度低;

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值