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

大学 算法,表示, 已帮助 人

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

请帮忙给出正确答案和分析,谢谢!

热搜:关于堆排序算法叙述正确的是

答案解析

难度★★☆ 搜索
  • 正确答案: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; /*选择下一个最小数*/ } }
    每趟从单链表头部开始,顺序查找当前链值最小的结点。找到后,插入到当前的有序表区的最后。