当前位置: 首页 > article >正文

[蓝桥杯]实现选择排序

实现选择排序

题目描述

实现选择排序算法。介绍如下:

选择排序的工作原理是每一次从需要排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排列完毕。

请编写代码,完成选择排序,对给定数据进行升序排列

输入描述

第一行,数字 N (2≤N≤100)N (2≤N≤100),表示待排序的元素个数。

第二行,待排序的元素。

输出描述

输出一行,为升序序列。

输入输出样例

示例

输入

6
7 1 4 8 5 2

输出

1 2 4 5 7 8

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

总通过次数: 7780  |  总提交次数: 8170  |  通过率: 95.2%

难度: 中等   标签: 排序

算法原理详解

  1. ​初始化​​:从数组第一个元素开始遍历
  2. ​查找最小值​​:在未排序部分(i+1 到 n-1)中查找最小元素
  3. ​交换位置​​:将找到的最小元素与当前位置 i 的元素交换
  4. ​迭代推进​​:重复上述过程直到整个数组有序

时间复杂度分析

  • ​比较次数​​:固定为 2n(n−1)​ 次
  • ​交换次数​​:最多 n−1 次
  • ​时间复杂度​​:O(n2)(最优/最坏/平均情况相同)

算法特性

  • ​不稳定排序​​:可能改变相等元素的原始顺序(如序列 5, 8, 5, 2
  • ​原地排序​​:仅需 O(1) 额外空间
  • ​适用场景​​:小规模数据或对内存限制严格的情况
    #include <iostream>
    using namespace std;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;  // 更新最小元素位置}}// 交换最小元素到正确位置swap(arr[i], arr[minIndex]);}
    }int main() {int n;cin >> n;int arr[n];for (int i = 0; i < n; i++) {cin >> arr[i];}selectionSort(arr, n);// 输出排序结果for (int i = 0; i < n - 1; i++) {cout << arr[i] << " ";}cout << arr[n - 1];  // 最后一个元素单独输出避免末尾空格return 0;
    }

    示例演示(输入:7 1 4 8 5 2

    步骤操作当前数组状态
    初始-[7, 1, 4, 8, 5, 2]
    1最小元素1与7交换[​​1​​, 7, 4, 8, 5, 2]
    2最小元素2与7交换[1, ​​2​​, 4, 8, 5, 7]
    34已是未排序最小[1, 2, ​​4​​, 8, 5, 7]
    4最小元素5与8交换[1, 2, 4, ​​5​​, 8, 7]
    5最小元素7与8交换[1, 2, 4, 5, ​​7​​, 8]

    输出结果:1 2 4 5 7 8

http://www.lryc.cn/news/2399335.html

相关文章:

  • [蓝桥杯]卡片换位
  • 【论文笔记】High-Resolution Representations for Labeling Pixels and Regions
  • 【题解-洛谷】P9422 [蓝桥杯 2023 国 B] 合并数列
  • 在MATLAB中,`mean(P_train, 2)` 的含义
  • 开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B(一)
  • 109页PPT华为流程模块L1-L4级梳理及研发采购服务资产5级建模
  • 第N1周:one-hot编码案例
  • Windows安装docker desktop
  • Ros(俩不同包的节点 交流 topic message)
  • 李沐《动手学深度学习》 | 数值稳定性
  • OpenCV CUDA模块图像处理------图像连通域标记接口函数connectedComponents()
  • Android Studio 打包时遇到了签名报错问题:Invalid keystore format
  • 内存管理【Linux操作系统】
  • Go语言学习-->从零开始搭建环境
  • 【力扣】3403. 从盒子中找出字典序最大的字符串 I
  • 苹果企业签名撤销
  • 12306高并发计算架构揭秘:Apache Geode 客户端接入与实践
  • JSON to Excel 3.0.0 版本发布 - 从Excel插件到Web应用的转变
  • 【前端】Vue3+elementui+ts,给标签设置样式属性style时,提示type check failed for prop,再次请出DeepSeek来解答
  • Neo4j 监控全解析:原理、技术、技巧与最佳实践
  • PyTorch——优化器(9)
  • 07 APP 自动化- appium+pytest+allure框架封装
  • Postgresql常规SQL语句操作
  • 智能合约安全漏洞解析:从 Reentrancy 到 Integer Overflow
  • 英国2025年战略防御评估报告:网络与电磁域成现代战争核心
  • 基于QPSK调制解调+Polar编译码(SCL译码)的matlab性能仿真,并对比BPSK
  • go语言学习 第5章:函数
  • Qt Quick快速入门笔记
  • 《波段操盘实战技法》速读笔记
  • Glide NoResultEncoderAvailableException异常解决