编辑代码

#include <iostream>
#include <vector>
using namespace std;

void bubble_sort(std::vector<int> &arr) {
    bool swaped = false;
    for (int i = 0; i < arr.size() - 1; i++) {  //只需要进行size - 1次循环即可,所以这里有-1
        for (int j = 0; j < arr.size() - i - 1; j++) {  //因为后面是进行的arr[j]和arr[j+1]的比较,所以这里一定要-1,否则j+1时会越界
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = temp;
                swaped = true;
            }
        }
        if (!swaped) {
            break;  //增加是否有交换的判断,在没有交换时表明已经排序完成,不需要再比较了
        }
    }
    return;
}

void quick_sort(std::vector<int> &arr, int left, int right) {
    if (left >= right) return;  //加个截止条件

    int i = left, j = right;
    int temp = arr[left];
    while (i < j) {
        while (i < j && arr[j] >= temp) {
            j--;
        }
        arr[i] = arr[j];
        while (i < j && arr[i] < temp) {
            i++;
        }
        arr[j] = arr[i];
    }
    arr[i] = temp;
    if (i > left) quick_sort(arr, left, i - 1);
    if (i < right) quick_sort(arr, i + 1, right);
    return;
}

int main() {
    std::cout << "Hello, World!" << std::endl;
    std::vector<int> arr = {12, 11, 13, 5, 6};
    // bubble_sort(arr);
    quick_sort(arr, 0, arr.size() - 1);
    std::cout << "Sorted array: ";
    for (int i = 0; i < arr.size(); ++i) {
        std::cout << arr[i] << " ";
    }
    return 0;
}