- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
优化:作为Chain类的成员函数 // initialize the bins bottom = new ChainNodeT* [range + 1]; top = new ChainNodeT* [range + 1]; for (b = 0; b = range; b++) bottom[b] = 0; 优化:作为Chain类的成员函数 // distribute to bins for (; first; first = first-link) {// add to bin b = first-data; if (bottom[b]) {// bin not empty top[b]-link = first; top[b] = first;} else // bin empty bottom[b] = top[b] = first; } Delete、Insert调用变为对链表内部结构的直接操纵 旧版本:Delete——deleteInsert——new新版本:节点从原链表摘除,直接放入箱子链表 优化:作为Chain类的成员函数 // collect from bins into sorted chain ChainNodeT *y = 0; for (b = 0; b = range; b++) if (bottom[b]) {// bin not empty if (y) // not first nonempty bin y-link = bottom[b]; else // first nonempty bin first = bottom[b]; y = top[b];} if (y) y-link = 0; delete [] bottom; delete [] top; } 时间复杂性Θ(n+range) 稳定排序 更复杂的排序 每个节点3个域:exam1、exam2、exam3 根据不同的域排序:exam1、exam3、exam1+exam2+exam3 解决方法一:Node1、Node2、Node3 每个类的int()返回exam1、exam3、… 链表?箱子、箱子?排序链表需数据复制 更好的方法 Node类定义函数F1、F2、F3,分别计算exam1、exam2、exam3、… BinSort接受额外参数value——一个函数指针,需对哪个域排序,选择F1、F2、F3之一传递给它 b=first-data?b=value(first) 按不同域进行排序 inline int F1(Node x) {return x.exam1;} inline int F2(Node x) {return x.exam2;} inline int F3(Node x) {return x.exam1 + x.exam2 + x.exam3;} void main(void) { Node x; ChainNode L; for (int i = 1; i = 20; i++) { x.exam1 = i/2; x.exam2 = 20 - i; x.exam3 = rand() % 100; = i; L.Insert(0,x);} 按不同域进行排序(续) L.BinSort(10, F1); cout Sort on exam 1 endl; cout L endl; L.BinSort(20, F2); cout Sort on exam 2 endl; cout L endl; L.BinSort(130, F3); cout Sort on sum of exams endl; cout L endl; } 3.8.2 基数排序(radix sort) 箱子排序的优点,如果元素可能取值范围较小(nrange),复杂性Θ(n+range)明显优于其他排序算法 但若nrange,性能则会很差 基数排序——多阶段的箱子排序 基数排序的思想 将数据切为几段,每段对次序的影响力是不同的 如0~rc-1的n个整数排序,rc-1(range)n 将整数分解为c位r进制数十进制:928?9、2、8;3725?3、7、2、560进制:3725?1、2、5;928?15
您可能关注的文档
- 3-6岁儿童常见心理问题讲诉.ppt
- 2第二章注射成型工艺与模具结构解析.ppt
- 3D玻璃精密研抛工具研究讲诉.ppt
- 3、草虫的村落解析.ppt
- 3X4-OLM4602低亮-拼接方案讲诉.doc
- 3墙体构造讲诉.ppt
- 3桥梁顶升加固讲诉.doc
- 3冲裁模结构、4、零件设计解析.ppt
- 3-区域分布式能源规划-汪庆桓讲诉.ppt
- 3--认证与证书讲诉.ppt
- 2012-2021北京重点校高一(下)期中语文汇编:词类活用.pdf
- 电力市场与经济运行优化:电力市场优化算法_(28).电力市场中的市场力分析.docx
- 医院培训课件:《俯卧位通气的护理》.pptx
- 电力市场与经济运行优化:电力系统能效优化方法_(1).电力市场基础理论.docx
- 电力市场与经济运行优化:电力系统能效优化方法_(9).电力系统运行与能效优化.docx
- 电力市场与经济运行优化:电力系统能效优化方法_(15).电力市场与环境影响分析.docx
- 电力市场与经济运行优化:电力系统优化调度_(1).电力市场基础与原理.docx
- 电力市场与经济运行优化:电力系统优化调度_(14).电力市场改革政策与影响.docx
- 电力市场与经济运行优化:电力系统运行优化_(4).电力系统运行基础.docx
- 2025年航运行业分析.docx
文档评论(0)