解法:
/* 插入排序 */
void insertionSort(vector<int>& nums) {
// 外循环:已排序区间为 [0, i-1]
for (int i = 1; i < nums.size(); i++) {
int base = nums[i], j = i - 1;
// 内循环:将 base 插入到已排序区间 [0, i-1] 中的正确位置
while (j >= 0 && nums[j] > base) {
nums[j + 1] = nums[j]; // 将 nums[j] 向右移动一位
j--;
}
nums[j + 1] = base; // 将 base 赋值到正确位置
}
}
本题只需
#include<iostream>
#include<vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> vec(n);
for (int& x : vec) cin >> x;
if (vec[0] > vec[1]) swap(vec[0], vec[1]);
for (int x : vec) cout << x << " ";
return 0;
}