c++ day 9

今天来学习选择排序

选择排序有多种方法 下面是方法一:

选择排序(Selection Sort)是一种简单但低效的排序算法。它的基本思想是在未排序的部分中选择最小(或最大)的元素,并将其放置在已排序部分的末尾。通过重复这个过程,直到所有元素都排好序为止。

下面是选择排序的C++实现示例:

#include <iostream>
#include <chrono>

void selectionSort(int arr[], int n) {
    for (int i = 0; i < n-1; ++i) {
        int minIndex = i;
        for (int j = i+1; j < n; ++j) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        // 交换最小元素和当前位置的元素
        int temp = arr[minIndex];
        arr[minIndex] = arr[i];
        arr[i] = temp;
    }
}

void printArray(int arr[], int n) {
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);

    std::cout << "原始数组: ";
    printArray(arr, n);

    // 测量开始时间点
    auto start = std::chrono::high_resolution_clock::now();

    selectionSort(arr, n);

    // 测量结束时间点
    auto end = std::chrono::high_resolution_clock::now();

    std::cout << "排序后数组: ";
    printArray(arr, n);

    // 计算程序运行时间(毫秒为单位)
    auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
    std::cout << "程序运行时间: " << duration << " 毫秒" << std::endl;

    return 0;
}

结果如下 我有点怀疑是不是测试时间代码写错了

 下面是冒泡排序:

#include <iostream>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n-1; ++i) {
        for (int j = 0; j < n-i-1; ++j) {
            if (arr[j] > arr[j+1]) {
                // 交换相邻元素
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

void printArray(int arr[], int n) {
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);

    std::cout << "原始数组: ";
    printArray(arr, n);

    bubbleSort(arr, n);

    std::cout << "排序后数组: ";
    printArray(arr, n);

    return 0;
}

后面的知识建议看书

这几天一直在处理八字循环的包 可能写的有点少。

 

posted @ 2023-07-14 22:04  芜湖大厨师  阅读(6)  评论(0编辑  收藏  举报