文章

1

粉丝

19

获赞

0

访问

104

头像
多种排序 题解:
P5131
发布于2024年4月8日 20:24
阅读数 104

#include <iostream>
#include <vector>
#include <algorithm>

// 直接插入排序
void insertionSort(std::vector<int>& arr) {
    int n = arr.size();
    for (int i = 1; i < n; ++i) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

// 一趟希尔排序(增量为d)
void shellSortOnePass(std::vector<int>& arr, int d) {
    int n = arr.size();
    for (int i = d; i < n; ++i) {
        int temp = arr[i];
        int j;
        for (j = i; j >= d && arr[j - d] > temp; j -= d) {
            arr[j] = arr[j - d];
        }
        arr[j] = temp;
    }
}

// 直接选择排序
void selectionSort(std::vector<int>& arr) {
    int n = arr.size();
    for (int i = 0; i < n - 1; ++i) {
        int min_index = i;
        for (int j = i + 1; j < n; ++j) {
            if (ar...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发