你的代码逻辑上太混乱了,而且还有一个bug,就是如果list->next == NULL的话第三行会直接报错。 先把直接选择排序的原理弄懂——每次选最小的数出来加入到已经排好序的数组 void sort(LinkList* list) { list = list->next; if (!list) return; for (LinkList* lp = list; lp != NULL; lp = lp->next) { LinkList* pos = lp; // 记录当前最小值的位置 for (LinkList* ptr = lp; ptr != NULL; ptr = ptr->next) { if (pos->score > ptr->score) { pos = ptr; } } swap(lp->score, pos->score); // 交换,把最小值放到已排列的尾部 } } 没有检验,仅供参考。多看看书上的例子,好好理解。
点赞 2

相关推荐

03-03 10:35
3d人士会梦见住进比弗利山庄吗:这四个项目属于是初学者的玩具了。不知道面试官咋问,而且双非本搞算法除了9,还是保守至少c9
点赞 评论 收藏
分享
03-05 12:52
吉林大学 Java
挣K存W养DOG:他的价值在于把他家里积攒的财富回馈给社会
点赞 评论 收藏
分享
牛客网
牛客企业服务