数据结构(学生演示).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(学生演示)

例 初始状态: 278 109 063 930 589 184 505 269 008 083 109 589 269 278 063 930 083 184 505 008 e[0] e[1] e[2] e[3] e[4] e[5] e[6] e[7] e[8] e[9] f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] 一趟分配 930 063 083 184 505 278 008 109 589 269 一趟收集: 基数排序的演示 505 008 109 930 063 269 278 083 184 589 二趟收集: 083 184 589 063 505 269 930 e[0] e[1] e[2] e[3] e[4] e[5] e[6] e[7] e[8] e[9] f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] 二趟分配 008 109 278 930 063 083 184 505 278 008 109 589 269 一趟收集: 008 063 083 109 184 269 278 505 589 930 三趟收集: 109 008 184 930 e[0] e[1] e[2] e[3] e[4] e[5] e[6] e[7] e[8] e[9] f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] 三趟分配 063 083 269 278 505 589 505 008 109 930 063 269 278 083 184 589 二趟收集: 链式基数排序步骤 设置10个队列,f[i]和e[i]分别为第i个队列的头指针和尾指针。 第一趟分配对最低位关键字(个位)进行,改变记录的指针值,将链表中记录分配至10个链队列中,每个队列记录的关键字的个位相同。 第一趟收集是改变所有非空队列的队尾记录的指针域,令其指向下一个非空队列的队头记录,重新将10个队列链成一个链表。 重复上述两步,进行第二趟、第三趟分配和收集,分别对十位、百位进行,最后得到一个有序序列。 时间复杂度: 分配:T(n)=O(n) 收集:T(n)=O(rd)、 T(n)=O(d(n+rd)) 其中:n——记录数, d——关键字数, rd——关键字取值范围(如十进制为10) 。 空间复杂度: S(n)=2rd个队列指针+n个指针域空间。 算法评价 平均时间 最差 最佳 辅助空间 稳定性 直接插入 O(n2) O(n2) O(n) O(1) 稳定 起泡排序 O(n2) O(n2) O(n) O(1) 稳定 直接选择 O(n2) O(n2) O(n2) O(1) 不稳定 快速排序 O(nlog2n) O(n2) 同平均 O(log2n) 不稳定 归并排序 O(nlog2n) 同平均 同平均 O(n) 稳定 基数排序 O(d(n+r)) 同平均 同平均 O(n+r) 稳定 排序算法小结 各种内部排序算法比较讨论 简单排序中直接插入最好;快速排序最快; 当关键字为正序时,直接插入和冒泡均最佳。 快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短。 直接插入 起泡 归并 稳定排序 不稳定 希尔 选择 快速 (49,65,97,26,49,38) (50,65,97,76,50,38) (49,65,97,26,49,38) * * * * * * * * 删除记录时: 采用开放地址,如果置空,再次查找可能会误判,直接返回无法查询到,实际上之前有冲突 * Hash表的查找及分析 Hash表的查找特点是:怎么构造的表就怎么查找,即造表与查找过程统一。 算法思路:对给定k,根据造表时选取的H(key)求H(k)。若H(k)单元=^,则查找失败,否则k与该单元存放的key比较,若相等,则查找成功;若不等,则根据设定的处理冲突方法,找下一地址Hi,直到查找到或等于空为止。 链地址法解决冲突时Hash表的查找及插入 void LinkHinsert(Renode *HT[m], Renode *S)//将指针S所指记录插入表HT的算法(如图所示) { int d; Renode *p; p=LinkHsearch(HT,S-key); //查找S结点// if(p) ERROR(); //记录已存在// else

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档