Top.Mail.Ru
Ответы

Сириус, Библиотечный метод сортировки, Квадратичные сортировки.

Есть код,

1234567891011121314151617181920212223242526272829303132333435
 #include <iostream> 
#include <vector> 
 
void insertionSort(std::vector<int>& arr) { 
    int n = arr.size(); 
    for (int i = 1; i < n; i++) { 
        int key = arr[i]; 
        int j = i - 1; 
 
        while (j >= 0 && arr[j] > key) { 
            arr[j + 1] = arr[j]; 
            j--; 
        } 
 
        arr[j + 1] = key; 
        for (int k = 0; k < arr.size(); k++) { 
            std::cout << arr[k] << " "; 
        } 
        std::cout << std::endl; 
    } 
} 
 
int main() { 
    int n; 
    std::cin >> n; 
 
    std::vector<int> arr(n); 
    for (int i = 0; i < n; i++) { 
        std::cin >> arr[i]; 
    } 
    insertionSort(arr); 
 
    return 0; 
} 
 

Когда ввожу
4
2 1 5 3,
Вывод --
1 2 5 3
1 2 5 3
1 2 3 5

Мне нужно убрать верхнее число, но я не знаю как. Нужно чтобы выводило только 2 последние. Как это исправить?

По дате
По рейтингу
Аватар пользователя
Просветленный

Эту строчку

1
 arr[j + 1] = key; 

переписать, например, так:

12345
 if (j != i - 1) {
    arr[j + 1] = key;
} else {
    continue;
} 
Аватар пользователя
Ученик

6