如何解决为什么我的向量函数不按预期对数据进行排序?
该代码旨在输出学生花名册,并允许按名字,姓氏,年级等对表格进行排序。
我的程序编译好了,实际上我对前几个问题有所帮助,但是似乎我的SortByFirstName和SortByLastName函数或这些函数与SortByGrade交互的方式遇到了麻烦。 (这些功能在代码的底部,其他所有功能都可以正常工作)
尝试按姓氏或名字排序时,输出结果几乎正确,也就是说,列表似乎已正确排序,但是其中两个中间名未排序。成绩值也被不正确地交换(或根本不交换?)。
仅按年级排序似乎没有问题,所以我假设错误在于SortByFirstName和SortByLastName函数。
以下是我当前代码(对于SortByFirstName)的示例错误输出:
预期:| |找到:
- Alyx Masinas | |艾丽斯·马西纳斯(Alyx Masinas)
- 吉妮麦当劳| |诺拉·曼侬(Nola Manon)
- Nola Manon | |吉妮·麦克唐纳(Ginnie McDonald)
- 兰迪·鲁宾| |兰迪·鲁宾
- 丝芙兰麦当劳| |丝芙兰·麦当劳
这里还有另一个(对于SortByFirstName + SortByGrade):
预期:| |找到:
- Alyx Masinas | |艾丽斯·马西纳斯(Alyx Masinas)
- 吉妮麦当劳| |诺拉·曼侬(Nola Manon)
- Nola Manon | |吉妮·麦克唐纳(Ginnie McDonald)
- 兰迪·鲁宾| |兰迪·鲁宾
- 丝芙兰麦当劳| |丝芙兰·麦当劳
预期:| |找到:
- 83.5 | | 83.5
- 98.7 | | 100
- 100 | | 98.7
- 89.5 | | 89.5
- 100 | | 100
为什么我的函数不能正确排序?最终全部编译之后,我不知道该去哪里。我一直在我的笔记中寻找类似的实践问题,其中在函数调用期间未完全选择向量。任何帮助将不胜感激,谢谢。
解决方法
在排序函数的内部循环中,您没有考虑到当交换两个学生时(例如,当firstName2
移入以前由firstName1
占用的位置时),您现在需要比较 new 最小已知条目(此例中为firstName2
)的后续元素。
添加一行:
if (firstName1 > firstName2) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
tempGrade = grades[i];
grades[i] = grades[j];
grades[j] = tempGrade;
// now only look for items that should come before our new "leader"
firstName1 = firstName2;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。