从零开始掌握选择排序:C++ 实现与解析

选择排序的详细讲解

选择排序是一种简单直观的排序算法,特别适合于教学和理解排序的基本概念。它的基本思想是:

  1. 在未排序部分找到最小(或者最大)的元素。
  2. 将这个元素与未排序部分的第一个元素交换位置。
  3. 将当前位置后面剩余的部分视为未排序部分,重复1和2的步骤,直到所有元素都被排序。

步骤

  1. 初始状态:整个数组未排序。
  2. 第一轮:找到数组中最小的元素,并将其与第一个元素交换位置。此时,第一个元素已经排好序。
  3. 第二轮:在剩余未排序部分中继续找到最小的元素,并将其与第二个元素交换位置。
  4. 重复上述步骤:直到所有元素都排好序。

C++实现

下面是详细的C++代码实现,包含中文注释,帮助你理解每一步操作。

#include <iostream>
#include <vector>
#include <algorithm> // 包含 std::swap
void swap(int &a,int &b) {
    int c = a;
    a = b;
    b = c;

}

// 选择排序函数
void selectionSort(std::vector<int>& arr) {
    for (int i = 0; i < arr.size();++i) {
        int min = i;
        for (int j = i; j < arr.size();++j) {
            if (arr[j] < arr[min]) {
                min = j;
            }
        }
        if (min != i) {
            swap(arr[i],arr[min]);
        }

        
}
  
}
void printf(std::vector<int> &vec) {
    for (int num:vec) {
        std::cout << num <<",";
    }
    std::cout << std::endl;

}
int main() {
    // 初始化一个数组
    std::vector<int> arr = { 64, -3, 12, 22, 11 };

    // 输出排序前的数组
    std::cout << "排序后的数组: ";
    printf(arr);

    // 调用选择排序函数进行排序
    selectionSort(arr);

    // 输出排序后的数组
    std::cout << "排序后的数组: ";
    printf(arr);

    return 0;
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值