使用Bubblesort对销售团队按销量排序的C#代码不生效问题咨询
问题修复说明
你的冒泡排序功能失效,核心问题出在BubbleSort函数的内部逻辑,一共2处需要修改,修改后即可正常按销量升序排序:
错误1:交换对象完全错位
你当前代码中,对比的是下标为j和j-1的两个销售的销量,判断出顺序不对后,却交换了下标为j和j+1的元素,完全没有修改顺序错误的两个元素,排序自然不会生效。
错误2:内层循环漏扫最后一个元素
当前内层循环的结束条件为j < list.Length - 1 - i,会导致每轮排序都漏掉最后一个需要对比的元素,无法完成全量排序。
修正后的完整BubbleSort代码
直接替换你原来的BubbleSort函数即可:
void BubbleSort(Säljare[] list) where Säljare : IComparable<Säljare> { for (int i = 0; i < list.Length - 1; i++) { // 修正结束条件为<=,覆盖所有需要对比的位置 for (int j = 1; j <= list.Length - 1 - i; j++) { if (list[j].CompareTo(list[j - 1]) < 0) { // 修正交换对象为j和j-1,和对比逻辑对应 Säljare tmp = list[j - 1]; list[j - 1] = list[j]; list[j] = tmp; } } } }
其他说明
你定义的Säljare结构体的CompareTo方法逻辑是正确的,刚好符合按销量升序排序的要求,其余的销售信息录入、销量层级统计、文件写入的逻辑都不需要修改。
内容的提问来源于stack exchange,提问作者Samuelhp98
相关产品推荐
相关产品推荐

