2022年2022年链表的选择排序 .pdf
《2022年2022年链表的选择排序 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年链表的选择排序 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、排序采用选择法:把 30 接到 80 后面45 接到 90 后面90 替原来 45 的位置* 预备知识:NODE *v,*u,*p,*h; U,v,h,p都是指针,它们只是地址性的可以指向结构而链表中的表有 next 指针* 链表排序h 45 65 54 80 90 30 要实现 45 和 90 的交换:30 要接到 80 后面45 要接到 90 后面90要接到 h 后面45 65 54 80 90 next 30 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页
2、 - - - - - - - - - 90 45 65 54 80 30 要实现 45 和 80 的交换:30 接到 54 后面45 接到 80 后面80 要接到 90 后面。即插入到90 后面所以一般情况需要用:两个指针vold v 指出 45 两个指针mold max 指出最大这样可以方便的实现v 或 max, 移走或被替换时, 其它的可以接上。但如果要被替换的是第一个,如45 被 90 替换。h,vold,v max 45 65 54 80 90 30 Max 指向 90 ,30 放到 80 后面,h,vold,v max 45 65 54 80 30 90 45 放到 90 后面,h,
3、v,vold都跟着 45 移动,max h,vold,v 90 45 65 54 80 30 h=max 还要一个游动指针,u,用于不断和 v 比较为了继续进行 ,下一轮开始前应该为:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - h ,vold v,max u 90 45 65 54 80 30 vold 要指向 90, v 指向 45, u指向 54 所以对于第一次交换后还要移动vold if(vold=v) 时,vold
4、=h; 总之一个比较可行的程序为:while (v-next != NULL) / 省去 空的 v,/ 选择法 for(max=v,uold= u = v-next; u-next != NULL; uold=u, u = u-next) if (u-score max-score ) mold=uold; max = u; / 找到最大的 /u已移动,但队列未动/ u-next = NULL即 u 是最后一个表,跳出循环,/ 还要判别 u 指向的表是最大吗?if(u-scoremax-score) mold =uold; max=u; / 最后一个if (max!= v) mv-next=
5、max-next; max-next =v; if(vold=v) h=max; else vold-next=max; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - 。 。 。 。 。可见用以上方法指针比较多,而且指针移动比较麻烦。因为一开始, 不能够用 vold=vold-next;方式。并且上述程序还未完全调通* 为此,一种常用的方法,引入一个空表接到h 的后面先比较 45 和 65 :if( v-next-score
6、 next-score ) ,.比出最大后, 90 要插入到 u 的位置时,要做下面的步骤:1. 30 接到80 后面 . max 独立出来2. max-next =u; 3. v-next=max; v=v-.next, u=v-next 将来输出时return h-next;, 就可以把空表让过名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - 具体分析:引进一个 v NODE *v=(NODE*)malloc(sixeof(
7、NODE); V u h p p1 p2 p3 p4 p5 p6 v-next =h; h=v; 把 v 插入 h 和 p1(45)之间先比较 p1=u(45)和 p2 (65) 为了适合循环:v-next-score,u-next-score表示要比较的数据: u-score=45,p2.score = 65 P=v; u=v-next ; (v-next=u)u-score=45 , v-next-score=45 p2=u-next=65 p2.score= u-next-score=65for(p=v,u=v-next; u-next!=NILL; u=u-next) if( p-ne
8、xt-score next-score) p=u; 找出最大的表 u-next-score=(90), 然后交换 (90) (45) v u u u ( 即 max )p 把 30 接到 80 后面:90 的指针要保存65 54 80 90 45 45 65 54 80 90 30 30 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 45 接到 90 后面90 替代 45 位置一、90 要独立出来,同时30 接到 80 后面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年链表的选择排序 2022 年链表 选择 排序
限制150内