Функция, которая будет отображать содержимое сортируемого массива С++ с использованием сортировки вставками

У меня есть ошибка, которая выделена "cout ‹‹ array[i] ‹‹ endl;" в этой секции. Строка находится под массивом [i]. Ошибка "отсутствует список аргументов для шаблона класса "std::array"". мне нужна функция для отображения содержимого массива, используя сортировку вставками. Если этот код неверен, кто-нибудь знает код для вывода содержимого массива с помощью линейного поиска.

#include <iostream>
#include <string>
#include <sstream>
using namespace std;



int main()
{
    int numbers[SIZE] = { 6,3,1,9,4,12,17,2 };
    for (int i = 0; i < 8; i++)
    {
        cout << array[i] << endl;
    }

    system("pause");
}

const int SIZE = 8;
void insertionSort(int numbers[], int arraySize)
{
    int i, j, insert;

    for (i = 1; i < arraySize; i++)
    {
        insert = numbers[i];
        j = i;
        while ((j > 0) && (numbers[j - 1] > insert))
        {
            numbers[j] = numbers[j - 1];
            j = j - 1;
        }
        numbers[j] = insert;

    }
}

person kas tozu    schedule 10.03.2016    source источник
comment
попробуйте cout << numbers[i] << endl; и SIZE должны быть определены до main.   -  person knivil    schedule 11.03.2016
comment
@knivil спасибо, что сработало   -  person kas tozu    schedule 11.03.2016
comment
Также обратите внимание, что std::array — это класс в стандартной библиотеке, и using namespace std; вы поместили его в глобальную область видимости, что делает использование идентификатора array, когда вы имели в виду что-то другое, потенциально ошибкой.   -  person Weak to Enuma Elish    schedule 11.03.2016
comment
@knivil, когда я запускаю программу, массив не сортируется, есть предложения?   -  person kas tozu    schedule 11.03.2016


Ответы (1)


Вы не вызвали свою функцию insertionSort(int numbers[], int arraySize) в main(). Поэтому с исходным массивом ничего не произойдет.

Обратите внимание, что вам нужен оператор return 0; внутри int main(). И что вам нужно использовать numbers[i] вместо array[i]. И вам нужно установить insertionSort() на return "что-то" или передать numbers[] в качестве ссылки. Также не забыть про прототип функции перед main().

Это должно работать:

const int SIZE = 8;
void insertionSort(int [], int);

int main()
{
    int numbers[SIZE] = { 6,3,1,9,4,12,17,2 };
    insertionSort(numbers, SIZE);
    for (int i = 0; i < 8; i++)
        cout << numbers[i] << endl;

    system("pause");
    return 0;
}

void insertionSort(int MyArray[], int size)
{
    int i, j, insert;

    for (i = 1; i < size; i++){
        insert = MyArray[i];
        j = i;
        while ((j > 0) && (MyArray[j - 1] > insert)){
            MyArray[j] = MyArray[j - 1];
            j = j - 1;}
        MyArray[j] = insert;}
}
person Khalil Khalaf    schedule 10.03.2016