Улучшена ошибка выбора сортировки за пределами границ - PullRequest
0 голосов
/ 16 мая 2019

У меня есть метод «Улучшенная версия сортировки выбора».Тем не менее, код не работает как "temp [x] = 0;"эта строка дает выход за пределы ошибки массива.Я не хочу использовать ArrayList.Как бы я изменил эту строку, чтобы быть в границах массива?

    public static void ImprovedSelectionSort(int[] Array)
    {
        Stopwatch timer = new Stopwatch();
        timer.Start();
        int[] temp = new int[Array.Length];
        for (int x = 1; x <= Array.Length; x++)
        {
            //OtherList.Add(0); -- what I want to do
            temp[x] = 0;
        }

        int n = Array.Length;
        int i = 0;
        while (i < n)
        {
            int rear = 0; 
            int curMax = Array[i]; 
           temp[rear] = i; 
            int j = i + 1;

            while (j < n)
            {
                if (curMax < Array[j])
                {
                    curMax = Array[j];
                    rear = -1;
                }
                if (curMax == Array[j])
                {
                    rear = rear + 1;
                    temp[rear] = j;
                }
                j++;
            }
            int front = 0;
            int p = Array[temp[front]];
            while (front <= rear)
            {
                int temporary = p;
                Array[temp[front]] = Array[i];
                Array[i] = temporary;
                i++;
                front += 1;
            }
        }

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Измените <= на <в цикле for. Это распространенная ошибка среди начинающих разработчиков, а не то, что вы должны потеть. Но хорошо помнить о будущем. </p>

0 голосов
/ 16 мая 2019

для (int x = 1; x <= Array.Length; x ++) </p>

Это, скорее всего, проблема. Последний индекс в массиве имеет длину минус 1 (таким образом, колода из 52 карт идет от 0..51). Изменение компонента «x <= Array.Length» на «x <Array.Length» должно исправить проблему. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...