微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的向量函数不按预期对数据进行排序?

如何解决为什么我的向量函数不按预期对数据进行排序?

代码旨在输出学生花名册,并允许按名字,姓氏,年级等对表格进行排序。

我的程序编译好了,实际上我对前几个问题有所帮助,但是似乎我的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 举报,一经查实,本站将立刻删除。