//冒泡排序,一句话概括:从前往后遍历,如果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]); } }