哈夫曼数据压缩算法的实现及性能分析

合集下载

哈夫曼树 带权路径长度 计算

哈夫曼树 带权路径长度 计算

哈夫曼树带权路径长度计算哈夫曼树是一种用于编码和解码的数据结构,常用于数据压缩算法中。

带权路径长度是指树中所有叶子节点的权值乘以其到根节点的路径长度的总和。

本文将介绍哈夫曼树的概念、构建方法以及带权路径长度的计算方法。

1. 哈夫曼树的概念哈夫曼树,又称最优二叉树,是一种满足以下条件的二叉树:树中的叶子节点代表待编码的字符,其权值为字符在文本中出现的频率或概率;树中的非叶子节点没有权值,只有左右子节点。

哈夫曼树的构建目标是使得带权路径长度最小。

2. 构建哈夫曼树的方法构建哈夫曼树的方法主要有两种:迭代法和递归法。

迭代法:首先将待编码的字符按照权值从小到大排序,然后选择权值最小的两个字符构造一个新的节点,其权值为这两个字符权值之和。

将这个新节点插入原来的字符集合中,重新按照权值排序。

重复以上步骤,直到只剩下一个节点,即为哈夫曼树的根节点。

递归法:首先将待编码的字符按照权值从小到大排序,选择权值最小的两个字符构造一个新的节点,其权值为这两个字符权值之和。

然后将这个新节点作为一个字符,与剩下的字符继续进行以上步骤,直到只剩下一个节点,即为哈夫曼树的根节点。

3. 带权路径长度的计算方法带权路径长度是指树中所有叶子节点的权值乘以其到根节点的路径长度的总和。

路径长度是指从根节点到目标节点的路径上所经过的边的数量。

计算带权路径长度的步骤如下:- 遍历哈夫曼树的每个叶子节点,计算该节点的权值乘以其到根节点的路径长度。

- 将所有叶子节点的带权路径长度相加,即可得到整个哈夫曼树的带权路径长度。

4. 哈夫曼树的应用哈夫曼树广泛应用于数据压缩算法中,如Huffman编码。

Huffman 编码是一种变长编码方式,通过根据字符在文本中的出现频率来构建不同长度的编码,从而减少编码后的数据长度,实现数据的压缩。

除了数据压缩,哈夫曼树还可以应用于其他领域,如图像压缩、音频压缩等。

在这些应用中,根据不同领域的特点,可以选择不同的权值计算方法,以达到更好的压缩效果。

通过哈夫曼编码实现文件的压缩与解压

通过哈夫曼编码实现文件的压缩与解压
其压 缩 。 1 2 哈夫 曼编 码 的条件 .
信息起到一定的安全保护作用 。然而 , 这些压缩与
解压 软 件都 是 基 于 L w 码 的改进 算 法 的基 础 上 开 z 发 的 。事 实上 , 哈夫曼 编码 作 为 一 种变 长 编 码技 术, 由于它 能充分 利用 短码 , 以 同样可 以根 据它来 所 开发 相应 的压缩 与解 压 软 件 , 且 这 种压 缩 与 解 压 并 软件 简单 易用 , 安全保 密性 能好 。 本 文所 述 的压 缩 与解 压 软件 的开 发 , 采用 了 哈 夫曼 编码 技术 , 时结 合 了 哈夫 曼 编 码表 的查 询 技 同 术, 解决 了变 长编码 的存储 困难 、 程序应 变 能力较 差
们可以将一个文件看作一个单符号信源 ; , 其次 任何

定义 1 对于给定的信 源和码符 号集 , 有一 若 个唯一可译码 , 其平均码长 Z小于所有其他 唯一可
译码 , 称这种 码 为紧致码 或最 佳码 。 则 定 理 1 哈夫 曼编 码是 紧致码 … 。
收稿 日期 : 080 —1 20 -71 基金项 目:湖北省 自然科学基金项 目(0 7 B 4 7 。 2 0 A A 0 ) 作者简介 : 王防修 (9 3 , , 17 一) 男 湖北省蕲春县人 , 讲师。
由于哈 夫曼 编码 是 即 时码 , 因此 只要 得 到 一个
s , , 并且统计出每种字符在文件 中出现 的概 ,… 5 , 率分别为p .)p S ) …,( , ( ,( , p S) 则编码 的具体方 s 法如下 。 1 ( )将 g 个信源符号按概率大小递减排列
果进 行检验 。同时说 明 了伪哈 夫 曼编码 表 文件 能够增 强压 缩 文件 的安 全性 。 关键 词 : 夫 曼编码 ; 缩 ; 压 ; 叉排序 树 ; 字 哈 压 解 二 码

哈夫曼编码的解码过程

哈夫曼编码的解码过程

哈夫曼编码的解码过程哈夫曼编码是一种被广泛应用于数据压缩领域的编码算法。

它通过构建一棵特殊的二叉树来实现对源数据的编码和解码。

在编码过程中,哈夫曼编码根据源数据的频率分配较短的编码给出现频率较高的字符,相反地,给出现频率较低的字符分配较长的编码,从而有效地减小编码后的数据长度。

而解码过程则是将编码后的数据转换为原始数据的过程。

一、哈夫曼编码的基本原理哈夫曼编码的基本原理是根据字符出现的频率来构建一棵哈夫曼树,以实现对字符的编码和解码。

具体步骤如下:1. 统计字符的频率:首先,需要对待编码的源数据进行扫描,并统计每个字符的出现频率。

通常可以使用哈希表等数据结构来记录字符及其对应的频率。

2. 构建哈夫曼树:根据字符的频率,构建一棵哈夫曼树。

构建哈夫曼树的算法可以采用贪心策略,即每次选择频率最小的两个节点合并,直到所有节点合并完毕,最终形成哈夫曼树。

3. 生成编码表:按照哈夫曼树的结构,为每个字符生成对应的编码。

从哈夫曼树的根节点开始,向左子树路径走一步表示编码位为0,向右子树路径走一步表示编码位为1,直到叶子节点,即可得到该字符的编码。

编码表可以使用哈希表等数据结构来存储字符和对应的编码。

4. 进行编码:将待编码的源数据字符根据编码表进行编码,生成对应的哈夫曼编码序列。

编码后的数据长度通常会显著减小,实现数据的压缩。

二、哈夫曼编码的解码过程哈夫曼编码的解码过程是将编码后的数据序列转换回原始数据的过程。

具体步骤如下:1. 读取编码序列:从编码后的数据中逐个读取编码位,直到读取到一个有效的编码。

2. 遍历哈夫曼树:从哈夫曼树的根节点开始,根据读取到的编码位,按照0表示左子树,1表示右子树的规则,不断遍历哈夫曼树,直到达到叶子节点。

3. 生成解码字符:在遍历过程中,若到达叶子节点,则表示找到了一个字符,将该字符输出。

然后重置遍历位置,继续读取编码序列,重复上述步骤,直至解码完成。

通过以上步骤,哈夫曼编码的解码过程完成,将编码后的数据序列转换回原始数据。

哈夫曼编码集和定长编码集构成的二叉树

哈夫曼编码集和定长编码集构成的二叉树

哈夫曼编码集和定长编码集构成的二叉树在信息论和计算机科学中,哈夫曼编码集和定长编码集构成的二叉树是一个非常重要的概念。

它们是用来表示和压缩数据的有效方法,也被广泛应用在数据传输和存储中。

理解这个概念对于深入研究数据处理和编码技术至关重要。

在本文中,我将对哈夫曼编码集和定长编码集构成的二叉树进行深度和广度的探讨,以便读者能更全面地理解这一概念。

1. 哈夫曼编码集和定长编码集的概念解释哈夫曼编码集和定长编码集是两种不同的编码方法,用于将数据进行压缩或表示。

定长编码集是一种固定长度的编码方式,例如每个字符都用8位二进制数表示。

而哈夫曼编码集是一种根据数据的出现频率来动态分配编码长度的方法,出现频率高的字符使用较短的编码,出现频率低的字符使用较长的编码。

哈夫曼编码集通常能够更有效地压缩数据,因为它充分利用了数据的统计特性。

2. 哈夫曼编码集和定长编码集构成的二叉树哈夫曼编码集和定长编码集构成的二叉树是通过将编码集中的每个字符构建成一个叶节点,然后根据编码长度和频率构建一棵二叉树。

在这棵二叉树中,出现频率高的字符对应的叶节点距离根节点较近,而出现频率低的字符对应的叶节点距离根节点较远。

这样就能够根据字符的编码快速地找到对应的二进制表示,从而实现高效的数据压缩和传输。

3. 深入探讨哈夫曼编码集和定长编码集构成的二叉树哈夫曼编码集和定长编码集构成的二叉树在数据压缩和编码领域有着广泛的应用。

它不仅能够有效地压缩数据,还能够提高数据传输和存储的效率。

通过深入研究这一概念,我们能够更全面地了解数据压缩的原理和方法,从而更好地应用于实际场景中。

4. 个人观点和理解对于哈夫曼编码集和定长编码集构成的二叉树,我认为它是一种非常高效且优雅的数据表示和压缩方法。

它通过合理地利用数据的统计特性,能够在不损失数据准确性的前提下大大减小数据的存储和传输开销。

在实际应用中,我们可以根据数据的特点选择合适的编码方式,以达到最佳的压缩效果。

数据压缩技术

数据压缩技术

数据压缩技术
数据压缩技术是将数据通过某种算法进行压缩,以减少存
储空间或传输带宽的技术。

数据压缩可以分为无损压缩和
有损压缩两种技术。

1. 无损压缩:无损压缩技术可以将数据压缩存储,而不会
丢失原始数据的任何信息。

常见的无损压缩算法包括:
- 霍夫曼编码:根据数据出现的频率,将出现频率高的字符用较短的编码表示,出现频率低的字符用较长的编码表示,从而实现对数据的压缩。

- 哈夫曼编码:根据数据的统计特征,将出现频率高的和出现频率低的数据分别用较短和较长的编码表示,从而实现
对数据的压缩。

- 利用重复部分编码:在数据中查找重复的部分,并用较短的编码代替,从而实现对数据的压缩。

2. 有损压缩:有损压缩技术为了更高的压缩比,会丢失部分数据的精度或者细节,降低了原始数据的质量。

常见的有损压缩算法包括:
- JPEG:用于图像压缩,通过将图像分成不同的小块,对每个小块进行离散余弦变换,从而将原始数据转换为频域数据,再根据频域数据的统计特征进行压缩。

- MP3:用于音频压缩,通过对音频信号进行频率转换和掩蔽效应分析,从而找到对人耳而言不易察觉的信息,将其丢弃,从而实现音频的压缩。

数据压缩技术是计算机领域中非常重要的技术,广泛应用于存储、传输和处理大量数据的场景,可以提高效率、降低存储成本和网络带宽消耗。

基于哈夫曼编码在Symbian平台下对文件压缩解压 论文

基于哈夫曼编码在Symbian平台下对文件压缩解压 论文

基于哈夫曼编码在Symbian平台下对文件压缩解压的研究摘要:随着多媒体技术和通讯技术的不断发展,多媒体娱乐、信息高速公路等不断对信息数据的存储和传输提出了更高的要求,也给现有的有限存储和宽带以严峻的考验,特别是在体积更小、容量有限、速度不高的手机中进行对数据传输和存储,因此压缩技术受到了越来越多的关注。

压缩的目的就是把原来较大的数据用尽量少的字节表示和传输,可以减轻数据存储和传输的负担,使数据在交互上实现快速传输和实时处理。

关键词:哈弗曼编码压缩解压研究中图分类号:tp391.41 文献标识码:a 文章编号:1672-3791(2011)10(c)-0000-001 哈夫曼编码基于哈夫曼编码数据压缩的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同,这是一种典型的无损编码方式。

这些代码都是二进制码, 且码字长度是不均匀的、平均码率可以接近信息源熵值的一种编码。

哈夫曼编码之所以能够对文件进行压缩,完全是由于文件能够满足哈夫曼编码的条件。

首先,我们可以将一个文件看作一个单符号信源;其次,任何一个文件都是由一个个字节构成的,每一个字节就是一个字符,而字符只有256种,因此一个文件最多含有256种字符。

2 静态哈夫曼编码对文件的压缩解压原理:静态哈夫曼编码法方需要对编码数据进行两遍扫描。

第一遍统计原数据中各字符出现的频率,利用得到的频率值创建哈夫曼树,并必须把树的信息保存起来,即把字符0-255(2=256)的频率值以3-4bytes的长度顺序存储起来,以便解压时创建同样的哈夫曼树进行解压;第二遍则根据第一遍扫描得到的哈夫曼树进行编码,并把编码后得到的字符存储起来。

压缩:(1) 定义结构体数组,用于存放哈夫曼编码。

数组大小至少512,因为结点最多可达256,所有结点数最多可达511。

(2) 首次遍历原文件,统计字符权重。

(3) 对结点进行冒泡排序,权重大的放在上面,编码时效率高。

计算机应用基础数据压缩和解压缩的原理与方法

计算机应用基础数据压缩和解压缩的原理与方法

计算机应用基础数据压缩和解压缩的原理与方法数据压缩和解压缩在计算机应用中扮演着重要的角色,它可以有效地减少数据的存储空间和网络传输所需的带宽。

本文将介绍数据压缩和解压缩的原理与方法。

一、数据压缩的原理数据压缩的基本原理是通过消除冗余信息来减少数据的存储空间和传输带宽。

下面将介绍几种常见的数据压缩原理。

1.1 无损压缩无损压缩是指在数据压缩的过程中不会丢失原始数据的任何信息。

其中最常用的无损压缩算法是哈夫曼编码和LZW编码。

1.1.1 哈夫曼编码哈夫曼编码是一种变长编码,根据字符出现的频率来构建编码表。

频率较高的字符使用较短的编码,频率较低的字符使用较长的编码。

在压缩的过程中,将原始数据替换为对应的编码,从而减少数据的大小。

1.1.2 LZW编码LZW编码是一种字典编码,将一系列连续的字符序列映射为短的编码。

在压缩的过程中,使用一个字典来存储已经出现的字符序列及其对应的编码。

当遇到新的字符序列时,将其添加到字典中,并输出其对应的编码。

1.2 有损压缩有损压缩是指在压缩的过程中会有一定程度上的信息丢失。

有损压缩常用于图像、音频和视频等多媒体数据的压缩。

其中最常用的有损压缩算法是JPEG和MP3。

1.2.1 JPEGJPEG是一种常用的图像压缩格式,它通过舍弃图像中的一些高频信息来减少数据的大小。

在压缩的过程中,JPEG将图像分为不同的8x8像素块,并对每个块进行离散余弦变换(DCT),然后对DCT系数进行量化,并使用熵编码进行进一步压缩。

1.2.2 MP3MP3是一种常用的音频压缩格式,它通过删除音频中的一些听觉上不明显的信息来减少数据的大小。

在压缩的过程中,MP3首先对音频进行傅里叶变换,并将频谱分割为不同的子带。

然后对每个子带进行量化,并使用熵编码进行进一步压缩。

二、数据解压缩的原理数据解压缩的过程是数据压缩的逆过程,它可以将压缩后的数据恢复为原始的数据。

解压缩的原理和压缩的原理相对应,下面将介绍几种常见的数据解压缩原理。

hz10压缩算法

hz10压缩算法

hz10压缩算法hz10压缩算法是一种常用的无损压缩算法,它能够有效地减小文件的大小,提高传输和存储效率。

本文将详细介绍hz10压缩算法的原理和应用。

一、什么是hz10压缩算法?hz10压缩算法是一种基于霍夫曼编码的压缩算法。

霍夫曼编码是一种变长编码方式,它通过将出现频率较高的字符用较短的编码表示,出现频率较低的字符用较长的编码表示,从而实现对文件的压缩。

hz10压缩算法在霍夫曼编码的基础上进行了一些改进,使得压缩效果更好。

1. 频率统计:hz10压缩算法首先对输入文件进行扫描,统计每个字符出现的频率。

频率统计可以使用哈希表或者数组等数据结构来实现。

2. 建立哈夫曼树:根据字符频率,构建哈夫曼树。

构建哈夫曼树的过程包括以下几个步骤:a) 将每个字符及其频率作为节点,构建单节点的二叉树。

b) 选择频率最低的两个节点,合并为一个新的节点,频率为两个节点的频率之和,将新节点插入二叉树。

c) 重复步骤b,直到所有节点都被合并为一个根节点,构建成完整的哈夫曼树。

3. 生成编码表:根据哈夫曼树,生成每个字符对应的编码表。

编码表可以通过遍历哈夫曼树的路径来获取,路径上的0和1分别表示左子树和右子树的方向。

4. 压缩文件:根据生成的编码表,将原始文件中的字符逐个转换为对应的编码,并将编码写入压缩文件。

由于编码是变长的,所以压缩后的文件大小会相应减小。

三、hz10压缩算法的应用hz10压缩算法广泛应用于各种需要压缩传输或存储的场景,例如网络传输、文件压缩和数据库压缩等。

1. 网络传输:在网络传输中,带宽是有限的资源,通过使用hz10压缩算法可以减小传输的数据量,提高传输速度。

在大数据传输、视频流传输等场景下,使用hz10压缩算法可以显著降低网络传输的延迟。

2. 文件压缩:在文件压缩中,hz10压缩算法可以将大文件压缩为较小的文件,从而节省存储空间。

在存储和传输大量文件的应用中,如云存储、备份系统等,使用hz10压缩算法可以有效降低存储成本和传输时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 不同排序算法的实现和性能比较 学 院 信息学院 专 业 计算机系统结构 姓 名 张 凯 歌 学 号 1201001179 指导教师 岳昆(副教授) 2

一、引言 ................................................................................................................................... 3 二、排序算法 ........................................................................................................................... 3 三、算法实现及性能比较 ....................................................................................................... 4 附录 .................................................................................................................................................. 9 参考文献......................................................................................................................................... 16 3 一、引言 排序是日常生活和工作中的一个常见问题,其目的是将一组原本无序的数据元素(或记录)序列,按照人们所需要的顺序,排列成有规律的按关键字有序的序列。 在现实生活中,人们要用到排序。如:学生成绩往往需要按照成绩高低或按学号从前到后排序;在图书馆众多的图书中,需要按照各个学科将书籍归类;排队时从高到低的顺序排队等问题。同样,排序也是计算机程序设计中的一个非常重要的操作,在计算机软件设计中占有极其重要的地位。本文将对排序算法中直接插入排序、快速排序和简单选择排序三种算法的实现做一些研究。

二、排序算法 排序是计算机内部经常进行的一种操作,其目的是将一组无序的记录序列调整为有序的记录序列,其可分为内部排序和外部排序(这里我们所说的排序只指前者)。下面我们将对这五中算法进行简单介绍和分析,然后通过实验数据给出五种中算法的性能比较。 (1) 插入排序(insertion sort):插入排序的思想是将一组无序的元素(这里我们用正整数来代替)分别插入一个已经有序的的数组里,并保证插入后的数组也是有序的。当所有无序组的元素都插入完毕时,一个有序数组构造完成。数组n[1…r]为初始的一个无序数组(为了直观起见,我们这里设定数组从1开始,而不是0),则n[1]默认为只有一个元素的有序数组,n[2]插入只有n[1]构成的有序数组中,则此时有序数组的元素数量变为2。以此类推,到第i个元素时,前i-1个元素已经是有序的,此时只需将第i个元素插入到有序数组中并使之保持有序。如此直至最后一个元素插入完毕,整个插入排序完成。 (2) 冒泡排序(bubble sort):冒泡排序每遍历一次数组,便将最大的元素放到数组最后边。下次遍历将次大的元素放到数组倒数第二位,依次类推,直至将最小的元素放到最前边,此时冒泡排序完成。 (3) 堆排序(heap sort):堆排序与其他排序算法最大的区别是它依靠一种特殊的数据结构——堆来进行排序。堆是一种完全二叉树,并且根节点不大于左右子树中的所有节点(这里描述的是小根堆,大根堆的话情况恰好相反),n[i]<=n[2*i]&&n[i]<=n[2*i+1]。因此堆排序算法首先要将给出的无序数组构造成一个堆,然后输出根节点(最小元素),将剩余元素重新恢复成堆,再次输出根节点。依次类推,直至最后一个节点输出,此时堆排序完成。 4

(4) 合并排序(merge sort):这里的合并排序和下边要描述的快速排序都采用了分而治之的思想,但两者仍然有很大差异。合并排序是将一个无序数组n[1…r]分成两个数组n[1…r/2]与n[r/2+1…r],分别对这两个小数组进行合并排序,然后再将这两个数组合并成一个大数组。由此我们看出合并排序时一个递归过程(非递归合并排序这里不做讨论)。合并排序的主要工作便是“合并”,两个小规模数组合并成大的,两个大的再合并成更大的,当然元素比较式在合并的过程中进行的。 (5) 快速排序(quick sort):如上所述,快速排序也是采用了分而治之的思想,但与合并排序有所不同的是快速排序先“工作”(这里是分割或partition),再递归。快速排序的主要思想是保证数组前半部分小于后半部分的元素,然后分别对前半部分和后半部分再分别进行排序,直至所有元素有序。

三、算法实现及性能比较 这里我们通过c++语言来实现各种排序算法(源码见附录),程序运行环境为windows xp,所用编译器为vc++ 6.0。如图1所示

图1 windows xp操作系统 在程序中我们根据数据规模的不同产生不同的随机整型数组,然后分别让不同 5

的排序算法来进行从小到大的排序。这里需要注意的是:每种排序算法在相同的输入规模中原始无序数据都是一样的。例如五种排序算法要对长度为100的无序数组进行排序,它们所要排序的无序数组都是一样的,我们以此来保证实验的公正性。在这里我们认为比较次数是排序算法的主要操作,因此我们在每个排序算法中加入计数器来记录排序过程中的比较次数,以此来作为对算法性能分析的主要参数(排序时间作为辅助参数)。表1为在输入规模分别为100,1000,2000,5000,10000,100000时各个算法的元素比较次数。 输入规模(n) 排序算法 100 10000 2000 5000 10000 100000

插入排序 2563 263217 1024775 6424426 24802709 2501929440 冒泡排序 4719 499423 1991201 12468181 49935611 704207961 堆排序 881 17530 37024 107023 232028 2975620 合并排序 535 7697 2942 55284 120347 1536091 快速排序 597 10085 22867 80143 157751 2104103 表1 排序算法比较次数性能比较 为了直观起见,我们根据实验数据画出各种排序算法在不同输入规模下比较次数的变化趋势图如图2所示:

五种排序算法性能比较图

020004000600080001000012000102030405060708090100110120130140150输入规模比较次数插入排序冒泡排序堆排序合并排序快速排序

图2排序算法性能趋势图 由上图我们基本上看出插入排序和冒泡排序的比较次数随输入规模的呈非线性增长,而后三种排序方法——堆排序,合并排序,快速排序的比较次数随输入规模的增长基本呈线性变化趋势。因此我们在这里暂且将前两种排序归类为低效排序算法,而将后三种归类为高效排序算法。图3和图4更加清楚地显示了这两类算法的变化趋势。 6

图4插入与冒泡排序性能比较图 堆,合并与快速排序性能分析

050000100000150000200000250000300000350000400000100030005000700090001100013000规模比较次数堆排序合并排序快速排序

图5高效排序算法性能分析图 实验结果与我们对这五种算法的性能理论分析基本吻合:插入排序与冒泡排序的时间复杂度为O(n*n),而后三种排序算法的时间复杂度为O(nlogn)。图4还显示出虽然冒泡排序和插入排序的时间复杂度相同,但插入排序的性能仍然比冒泡排序好。 关于图5我们仍有一点要说明,就是从比较次数上看合并排序似乎是最高效

插入与冒泡排序性能比较图020000000400000006000000080000000100000000120000000

1000200030004000500060007000800090001000011000120001300014000

输入规模

比较次数插入排序

冒泡排序 7 的算法,但我们知道快速排序才是排序算法中最快的算法,这里理论似乎和实验结果出现了矛盾。下面我们以算法执行的时间来进行辅助说明,如表2所示:

次数 计数排序 基数排序 堆排序 快速排序 希尔排序 直接插入排序 冒泡排序 1 0.0000 0.0310 0.0470 0.0470 0.0310 14.7970 58.0930 2 0.0000 0.0470 0.0310 0.0470 0.0470 16.2500 53.3280 3 0.0000 0.0310 0.0310 0.0310 0.0310 14.4850 62.4380 4 0.0000 0.0320 0.0320 0.0470 0.0310 17.1090 61.8440 5 0.0000 0.0310 0.0470 0.0470 0.0310 16.9380 62.3280 6 0.0000 0.0310 0.0310 0.0470 0.0310 16.9380 57.7030 7 0.0000 0.0310 0.0470 0.0310 0.0310 16.8750 61.9380 8 0.0150 0.0470 0.0310 0.0470 0.0320 17.3910 62.8600 9 0.0000 0.0320 0.0470 0.0460 0.0310 16.9530 62.2660 10 0.0000 0.0470 0.0310 0.0470 0.0310 17.0160 60.1410 11 0.0000 0.0930 0.0780 0.0320 0.0310 14.6090 54.6570 12 0.0000 0.0310 0.0320 0.0310 0.0310 15.0940 62.3430 13 0.0000 0.0310 0.0310 0.0470 0.0310 17.2340 61.9530 14 0.0000 0.0320 0.0470 0.0470 0.0310 16.9060 61.0620 15 0.0000 0.0320 0.0320 0.0460 0.0320 16.7810 62.5310 16 0.0000 0.0470 0.0470 0.0620 0.0310 17.2350 57.1720 17 0.0150 0.0160 0.0320 0.0470 0.0310 14.1400 52.0320 18 0.0150 0.0160 0.0310 0.0310 0.0310 14.1100 52.3590 19 0.0000 0.0310 0.0320 0.0460 0.0320 14.1090 51.8750 20 0.0000 0.0310 0.0320 0.0460 0.0320 14.0780 52.4840 21 0.0150 0.0780 0.0470 0.0470 0.0310 16.3750 59.5150 22 0.0000 0.0310 0.0310 0.0470 0.0320 16.8900 60.3440 23 0.0000 0.0310 0.0310 0.0310 0.0310 16.3440 60.0930 24 0.0000 0.0310 0.0310 0.0470 0.0310 16.3440 60.5780 25 0.0000 0.0320 0.0470 0.0470 0.0470 16.3590 59.7810 26 0.0160 0.0470 0.0310 0.0470 0.0310 16.1250 61.0620 27 0.0000 0.0310 0.0470 0.0470 0.0310 16.7810 59.6100 28 0.0150 0.0320 0.0320 0.0470 0.0310 16.9220 56.8130 29 0.0000 0.0310 0.0310 0.0310 0.0310 15.0790 57.8120 30 0.0000 0.0310 0.0320 0.0460 0.0320 14.7810 58.8280 31 0.0000 0.0310 0.0310 0.0470 0.0310 15.8590 59.1400 32 0.0000 0.0470 0.0320 0.0310 0.0310 16.0940 59.1560 33 0.0000 0.0470 0.0310 0.0310 0.0310 15.9850 59.1400 34 0.0000 0.0310 0.0310 0.0470 0.0320 16.0150 59.2500 35 0.0000 0.0310 0.0470 0.0470 0.0310 16.7660 57.9840 36 0.0000 0.0310 0.0320 0.0470 0.0310 15.3750 59.0470 37 0.0000 0.0320 0.0460 0.0470 0.0320 16.0310 58.9060 38 0.0000 0.0310 0.0310 0.0470 0.0310 15.9530 57.2650 39 0.0160 0.0310 0.0470 0.0470 0.0310 15.9530 57.5160 40 0.0150 0.0310 0.0320 0.0470 0.0310 14.7030 56.6710

相关文档
最新文档