Ошибка в пузырьковом методе c#

180
27 февраля 2019, 23:30

Есть ступенчатый массив и его необходимо отсортировать методом пузырька. Код вроде потихоньку работает, но в один момент просто крашится, в какой именно не знаю, т.к. слишком много итераций. Помогите пожалуйста.

        int col = array.Length;
        int row = array[1].Length;
        int temp = 0;
        for (int k = 0; k < col; ++k) 
        {
            for (int l = 0; l < row; ++l) 
            {
                for (int i = 0; i < col; ++i)
                {
                    for (int j = 0; j < row; ++j)
                    {
                        if ((i + 1 == col) && (j + 1 == row))
                        {
                            continue;
                        }
                        else if ((j + 1 == row) && (array[i][j] > array[i + 1][0]))
                        {
                            temp = array[i][j];
                            array[i][j] = array[i + 1][0];
                            array[i + 1][0] = temp;
                        }
                        else if (array[i][j] > array[i][j + 1]) 
                        {
                            temp = array[i][j];
                            array[i][j] = array[i][j + 1];
                            array[i][j + 1] = temp;
                        }
                    }
                }
            }
        }
Answer 1

в один момент просто крашится

Вы попадаете в блок else if (array[i][j] > array[i][j + 1]){ ... } и вылезаете за границу массива.

И уберите, пожалуйста, два внешних цикла.

Answer 2
int col = array.Length;
    int row = array[1].Length;
    int temp = 0;
    for (int k = 0; k < col; ++k)
    {
        for (int l = 0; l < row; ++l)
        {
            for (int i = 0; i < col; ++i)
            {
                for (int j = 0; j < row; ++j)
                {
                    if (l != j && k != i) {
                        temp = array[i][j];
                        array[i][j] = array[k][l];
                        array[k][l] = temp;
                    }
                }
            }
        }
    }
READ ALSO
Программа зависает из-за await TLSharp

Программа зависает из-за await TLSharp

вот написал программу для телеграмма на библиотеке TLSharp, сначала всё хорошо работало, но после чего-то, она стала зависать навсегда после...

172
Изменение вида ячейки DataGrid

Изменение вида ячейки DataGrid

Вытягиваю данные в DataGrid получается так:

189
c# OCR OpenCV как изменить PageSetMode?

c# OCR OpenCV как изменить PageSetMode?

По умолчанию psm = singleblock

208
Отправка Json из c# на PHP-сайт методом POST

Отправка Json из c# на PHP-сайт методом POST

Помогите пожалуйста со следующим вопросом:

169