设计一个用链表表示的直接选择排序算法。

admin2014-12-25  42

问题 设计一个用链表表示的直接选择排序算法。

选项

答案Voidselesort(1klistL) /*设链表L带头结点*/ { q=L; /*指向第一数据前趋*/ while(q一>next!=NULL) {p1=q一>next; minp=p1; /*minp指向当前已知的最小数*/ while(p1一>next!=NULL) {if(p1一>next一>datadata) minp=pl一>next, /*找到了更小数*/ pl=pl->next; /*继续往下找*/ } if(minp!=q一>next) /*将最小数交换到第一个位置上*/ {r1=minp一>next; minp一>next=r1一>next; /*删除最小数*/ r2=q一>next; q一>next=r2一>next; /*删除当前表中第一个数*/ rl一>next=q一>next; q一>next=r1; /*将最小插入到第一位置上*/ r2一>next=minp一>next; minp一>next=r2; /*将原第一个数放到最小数原位置上*/ } q=q>next; /*选择下一个最小数*/ } }

解析 每趟从单链表头部开始,顺序查找当前链值最小的结点。找到后,插入到当前的有序表区的最后。
转载请注明原文地址:https://jikaoti.com/ti/vjLaFFFM
0

最新回复(0)