C#冒泡排序错误? [重复]

问题描述 投票:0回答:1

这有什么问题?我有一个2500块随机数的块,我想用冒号排序它们。但是当我运行程序时,我得到了这个:

System.IndexOutOfRangeException

此后的错误代码:

if (szamok[i] > szamok[i + 1]).

(抱歉英文不好:/)

        int r = 2500;
        int seged;


        while (r > 1)
          {
              for (int i = 0; i < 2500; i++)
               {
                if (szamok[i] > szamok[i + 1])
                  {
                    seged = szamok[i + 1];
                    szamok[i + 1] = szamok[i];
                    szamok[i] = seged;
                   }

               }
            r = r - 1;
          }
c# bubble-sort
1个回答
0
投票

错误说明:您的索引超出范围。您试图在此数组中的最后一个元素之后访问数组中的元素。

线szamok[i] > szamok[i + 1]似乎是罪魁祸首。 +1太多了。

尝试更改循环,这样您就不会访问最后一个元素,只会访问倒数第二个元素:

for (int i = 0; i < (2500-1); i++)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.