Laicifitra
2021-09-30 11:54
采纳率: 75%
浏览 48

想知道这个排序算法错在哪,感觉没啥问题啊


for (int i = 1; i < N; ++i)
    {
        for (int j = i - 1; j >= 0; --j)
        {
            if (a[i] < a[j])
            {
                swap(a[i], a[j]);
            }
            else
                break;
        }
    }
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Just Love Morning 2021-09-30 16:53
    已采纳

    更正后如下:

        for (int i = 1; i < N; ++i)
        {
            for (int j = N - 1; j > 0; --j)
            {
                if (a[j] < a[j - 1])
                {
                    swap(a[j], a[j - 1]);
                }
            }
        }
    

    首先,里面那个 break 是不应该的,其次,比较的是相邻的两个元素的大小而不是 a[i]a[j] 的。

    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题