Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

{Oxygen} Ученик (103), на голосовании 6 месяцев назад
Есть код,
 #include  
#include

void insertionSort(std::vector& 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 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 последние. Как это исправить?
Голосование за лучший ответ
Dmitry Просветленный (22742) 7 месяцев назад
Эту строчку
 arr[j + 1] = key; 
переписать, например, так:
 if (j != i - 1) {
arr[j + 1] = key;
} else {
continue;
}
Похожие вопросы