插入排序算法案例


#include <iostream>
#include <vector>
using namespace std;
// 插入排序函数
void insertionSort(vector<int>& arr) {
    int n = arr.size();
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;
        /* 将arr[i]插入到arr[0], arr[1], ..., arr[i-1]中的已排序序列中 */
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}
// 用于打印数组的函数
void printArray(const vector<int>& arr) {
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;
}
// 主函数,用于测试插入排序
int main() {
    vector<int> arr = {12, 11, 13, 5, 6};
    cout << "原始数组: 
";
    printArray(arr);
    insertionSort(arr);
    cout << "排序后的数组: 
";
    printArray(arr);
    return 0;
}

这段代码首先定义了一个insertionSort函数,它接受一个vector类型的引用参数arr作为待排序的数组。然后,它使用了两层循环来实现插入排序:外层循环控制当前要排序的元素(从数组的第二个元素开始),内层循环则将当前元素与它之前的元素逐一比较,如果之前的元素比当前元素大,则将这个元素向后移动一位,为当前元素腾出空间。最后,将当前元素放到它应该在的正确位置上。 printArray函数用于打印数组中的元素,方便查看排序前后的数组状态。 main函数中创建了一个示例数组arr,并调用insertionSort函数对其进行排序,然后分别打印排序前后的数组。