【发布时间】:2020-09-28 01:36:36
【问题描述】:
我有这个错误,我无法将选择排序为正确的升序和降序。我已经尝试了所有可能的解决方案来解决这个问题,但我想不出别的办法。如果有人愿意帮助我解决这个问题,我将不胜感激。
错误示例 -
- 布鲁斯·韦恩
- 克拉克·肯特
- 罗纳德·雷蒙德
- 黛娜·兰斯
- 亚瑟库里
- 沙耶拉霍尔
我希望它是怎样的 -
- 亚瑟库里
- 布鲁斯·韦恩
- 克拉克·肯特
- 黛娜·兰斯
- 罗纳德·雷蒙德
- 沙耶拉霍尔
排序方法
public static void Sort(Employee[] emp, int size, int choice) {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size - 1; j++) {
bool switchval = false;
switch (choice) {
case 1: // ascending sort by employee name
if (emp[j].GetName().CompareTo(emp[j + 1].GetName()) > 0)
switchval = true;
break;
case 2: // ascending sort by employee number
if (emp[j].GetNumber() > emp[j + 1].GetNumber())
switchval = true;
break;
case 3: // descending sort by hourly rate
if (emp[j].GetRate() < emp[j + 1].GetRate())
switchval = true;
break;
case 4: // descending sort by weekly hours
if (emp[j].GetHours() < emp[j + 1].GetHours())
switchval = true;
break;
case 5: // descending sort by gross pay
if (emp[j].GetGross() < emp[j + 1].GetGross())
switchval = true;
break;
}
if (switchval) {
Employee temp;
temp = emp[i];
emp[i] = emp[j];
emp[j] = temp;
}
}
}
}
【问题讨论】:
-
在 C#7 中,您可以使用元组交换两个变量:
(emp[i], emp[j]) = (emp[j], emp[i]); -
为什么刚刚删除了stackoverflow.com/questions/64638646/… 问题?这似乎完全可以回答;我只是在等待完整的代码,以确保它易于实现。
-
@Enigmativity 无法发送完整的代码,因为它有一个流式阅读器文件,其中的单词乱码。
-
@BeR - 这似乎不是不可能的。在任何情况下你都可以使用 postbin。尽管如此,答案很简单,但是您的代码是以复杂的方式编写的。我希望向您展示答案以及如何简化您的编码。