@aleshaykovlev
html, css, js, node, webpack, sass, react

Выводятся какие-то цифры и ошибка, что не так?

Хотел реализовать алгоритм сортировка пузырьком вот так:
#include <iostream>
using namespace std;

int main()
{
    short arr[8] = {2,3,1,5,8,4,7,6};

    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            if (arr[j + 1] < arr[j])
            {
                short tmp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = tmp;
            }
        }
    }

    for (int i = 0; i < 8; i++)
    {
        cout << arr[i] << " ";
    }
}


Выводится ошибка Stack around the variable "arr" was corrupted, а в консоли это -13108 1 2 3 4 5 6 7

Что я сделал не так, как избавиться от этих цифр и что они значат?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Ошибка, если ее перевести, означает: вы вышли за границу массива arr.

Смотрите внимательно, где вы к нему обращаетесь. Особенно на arr[j + 1]. Какие значения может принимать j? Какой размер массива и, соответственно, к каким индексам можно обращаться?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
При j == 7 куда обращается arr[j + 1] ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы