各种排序查询的算法效率比较

本文详细介绍了多种排序算法(如直接插入、希尔插入等)的时间复杂度、空间复杂度及稳定性,并对比了不同算法的特点与适用场景。同时,还探讨了几种检索算法,包括线性表的顺序检索、折半检索等,以及树表、HASH表的检索效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

排序

SN

排序方式

时间复杂度

空间复杂度

稳定性

算法描述

AVG

最好

最坏

1

直接插入

O(n2)

O(n)

O(n2)

O(1)

稳定

KEY大小插入到有序队列

2

希尔插入

 

 

 

O(1)

不稳定

缩小增量排序

3

折半插入

 

 

 

 

稳定

 

4

冒泡排序

O(n2)

O(n)

O(n2)

O(1)

稳定

属交换排序,从右到左,相邻记录比较

5

快速排序

O(nlog2n)

O(nlog2n)

O(n2)

O(log2n)~O(n)

不稳定

两端向中间比较

6

直接选择

O(n2)

 

 

 

不稳定

 

7

堆排序

O(nlog2n)

 

O(nlog2n)

O(1)

不稳定

树形选择排序

8

归并排序

O(nlog2n)

 

 

O(n)

稳定

 

9

基数排序

 

 

 

O(n)

不稳定

 

 

备注:

u       1,2,3属于插入排序; 4,5属于交换排序; 6,7属于选择排序.

u       记录数大时,选择改进算法; 记录数较小时,可采用简单排序(1,4,6)

u       平均情况下,快速排序速度是最快的,推荐使用.

u       稳定性指具有相同值的记录在排序时相对次序不改变.

u       内排序: 数据量较少时,仅在内存中进行;  

u       外排序: 数据量较大时,在内外存中进行数据交换(常用归并排序,文件来解决)

查询

检索表: 检索所依赖的数据结构.

查询定义: 根据KEY,在检索表中确定VALUE的值.

1 线性表

1)顺序检索: 采用逆向检索

2)折半检索

3)分块检索

2 树表

1)二叉排序树

2)平衡的二叉排序树

3)B

4)红黑树

3 HASH

最快只需常数时间.

4 其它数据结构

1)序列容器

Vector: 类似线性表

List 类似线性表

 

2)关联容器

Map: 图的检索, 一对一

Multimap: 一对多

Hashmap: 常数时间检索,hash_table实现.

 

检索算法评估: (平均检索长度ASL)

下面是检索算法效率列表:

检索表

检索算法

ASL

算法描述

线性表

顺序

(n+1)/2

 

折半

Log2(n+1)-1 (n>>100)

适用于有序表

分块

 

 

树表

二叉排序树

 

 

平衡二叉排序树

 

 

B

 

 

红黑树

 

 

HASH

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值