//冒泡排序,一句话概括:从前往后遍历,如果a[j-1] > a[j],则交换位置,将最大值放到最后。
void bubble_sort(vector<int>& nums, int n) {
if (n <= 1)
return;
bool flag = false;
for (int i = 1;i < n;i++) {
flag = false;
for (int j = 1;j < n - i + 1;j++) {
if (nums[j] < nums[j - 1]) {
swap(nums[j], nums[j - 1]);
flag = true;
}
}
if (!flag)
break;
}
}
//插入排序,一句话概括:从前往后遍历,然后从i往前遍历,如果a[i-1] > a[i],则交换位置,将最小值放到最前。
void InsertSort(vector<int>& nums, int n) {
if (n <= 1)
return;
for (int i = 0;i < n;i++) {
for (int j = i;j > 0 && nums[j] < nums[j - 1];j--) {
swap(nums[j], nums[j - 1]);
}
}
}
//选择排序,前面是已排序数组,后面是未排序数组,每次从未排序数组中找到最小元素,放到已排序的末尾。
void SelectSort(vector<int>& nums, int n) {
if (n <= 1)
return;
int minn;
for (int i = 0;i < n - 1;i++) {
minn = i;
for (int j = i + 1;j < n;j++) {
if (nums[j] < nums[minn]) {
minn = j;
}
}
swap(nums[minn], nums[i]);
}
}