You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中实现冒泡排序List<Stad>排序结果异常问题求助

问题排查与修复方案

你的冒泡排序失效主要有两个核心问题,还有一个可优化的点:

1. if语句末尾的多余分号

代码中if (städer[j].Temp > städer[j + 1].Temp);后面的分号是致命错误——它会让if的条件判断变成一个空语句,不管温度比较结果如何,后面的代码块都会无条件执行,完全打乱了排序逻辑。

2. 属性大小写不一致

C#是大小写敏感语言,你在比较时用了Temp(大写开头),但交换时用了temp(小写开头),这两个是不同的属性,相当于用A属性判断排序条件,却交换了B属性,排序自然混乱。

修复后的完整代码

static void bubblesort(List<Stad> städer)
{
    int n = städer.Count - 1;
    for (int i = 0; i < n; i++)
    {
        int färdigSorterade = n - i;
        for (int j = 0; j < färdigSorterade; j++)
        {
            // 去掉分号,统一属性大小写
            if (städer[j].temp > städer[j + 1].temp)
            {
                // 优化:直接交换整个Stad对象,避免分别交换属性的繁琐和错误
                Stad tempStad = städer[j];
                städer[j] = städer[j + 1];
                städer[j + 1] = tempStad;
            }
        }
    }
}

额外优化说明

  • 移除了冗余的n参数,方法内部可直接通过städer.Count获取长度,不需要外部传入
  • 直接交换整个Stad对象,比分别交换namn和temp属性更简洁,也避免了属性名写错的风险

内容的提问来源于stack exchange,提问作者Aron Åkesäter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:52:03