数据结构之编写冒泡排序算法(4)

2025-06-24

13 24 37 90 13 24 37 90 53 13 24 20 37 90 53 40

错误!未找到引用源。 13 24 RR 37 13 24 40 24 37 13 37 53 RL 90 24 13 37 53 90

24 13 37 40 53 RL 24 90 13 37 53 40 90 13 20 24 37 53 40 LR 20 90 13 37 53 24 40 90

错误!未找到引用源。

思路:实际上就是对二叉排序树的查找。具体算法参见“错误!未找到引用源。”二叉排序树的查找算法(递归和非递归算法)。

错误!未找到引用源。 结果:20,5,6。 分析:最坏情况下,二叉排序树的深度为n(结点个数),最小深度等于完全二叉树的深度?logn??1。 平衡二叉排序树的最大深度和结点数的关系为Nh=Nh-1+Nh-2+1,N0=0,N1=1。

错误!未找到引用源。 结果:2,4,3。

分析:非空B-树中的根结点最少可以有2棵子树,其他非终端结点至少含有?m/2?=3棵子树。结点最多有m=5棵子树,m-1=4个关键字。

错误!未找到引用源。

思路:依次插入关键字建立哈希表。详细步骤参见“错误!未找到引用源。错误!未找到引用源。”。

0 1 2 3 4 5 6 7 8 9 10 11 12 141 12 681 191 201 852 91 231 1) ASL = (1+2+1+1+1+2+1+1)/8 =5/4=1.25

0 1 2 3 4 5 6 7 8 9 10 11 12 202 141 681 853 191 12 91 231 2) ASL = (2+1+1+3+1+2+1+1)/8 =3/2=1.5 3)

0 /\\ 1 2 /\\ 3 4 /\\ 5 /\\ 6 7 8 /\\ 9 10 11 /\\ 12 /\\

14 68 /\\ 1 /\\ 19 /\\ 20 9 /\\ 23 /\\ 85 /\\ ASL = (1+2+1+1+1+2+1+1)/8 =5/4=1.25

错误!未找到引用源。

1) 直接插入排序

(24), 86, 48, 56, 72, 36 (24, 86), 48, 56, 72, 36 (24, 48, 86), 56, 72, 36 (24, 48, 56, 86), 72, 36 (24, 48, 56, 72, 86), 36 (24, 36, 48, 56, 72, 86) 2) 希尔排序

24, 86, 48, 56, 72, 36 dk=3 24, 72, 36, 56, 86, 48 dk=2 24, 48, 36, 56, 86, 72 dk=1 24, 36, 48, 56, 72, 86 3) 起泡排序

24, 86, 48, 56, 72, 36 24, 48, 56, 72, 36,(86) 24, 48, 56, 36,(72, 86) 24, 48, 36,(56, 72, 86) 24, 36,(48, 56, 72, 86) 24,(36, 48, 56, 72, 86) 4) 快速排序

{24, 86, 48, 56, 72, 36}

{}24{86, 48, 56, 72, 36} {36, 48, 56, 72}86{} {}36{48, 56, 72} {}48{56, 72} {}56{72} (24, 36, 48, 56, 72, 86)

5) 简单选择排序

24, 86, 48, 56, 72, 36 (24), 86, 48, 56, 72, 36 (24, 36), 48, 56, 72, 86 (24, 36, 48), 56, 72, 86 (24, 36, 48, 56), 72, 86 (24, 36, 48, 56, 72), 86 6) 堆排序

24, 86, 48, 56, 72, 36

(86, 72, 48, 56, 24, 36) (建立堆) (72, 56, 48, 36, 24), 86 (56, 36, 48, 24), 72, 86 (48, 36, 24), 56, 72, 86 (36, 24), 48, 56, 72, 86 (24), 36, 48, 56, 72, 86 7) 归并排序

(24),(86),(48),(56),(72),(36) (24, 86), (48, 56), (36, 72) (24, 48, 56, 86), (36, 72) (24, 36, 48, 56, 72, 86) 8) 链式基数排序

(24, 86, 48, 56, 72, 36) 分配:

[0][1][2][3][4][5][6][7][8][9] 72 24 86 48 56 36

收集:72, 24, 86, 56, 36, 48 分配:

[0][1][2][3][4][5][6][7][8][9] 24 36 48 56 72 86 收集:(24, 36, 48, 56, 72, 86)

错误!未找到引用源。 分析:含有n个记录的序列排序可能的初始状态有n!个,所以描述n个记录排序过程的判定树必有n!个叶子,二叉树的高度h≥log2(n!)+1。该判定树上必定存在长度为log2(n!)的路径。所以借助比较的排序方法在最坏情况下的所需要比较次数至少为log2(n!)。时间复杂度为O(log2(n!)) = O(nlogn)。


数据结构之编写冒泡排序算法(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学三年级数学笔算练习题(660题)我是计算小能手

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219