排序算法之选择排序|c++实现

引言

排序算法学习第二弹之选择排序,这也是入门的一个基础算法。

算法描述

  1. 从序列中选择最大(小)的元素,放在序列的结束位置(下标为n-1)

  2. 从剩下的未排序序列中继续选择最大(小)的元素,放在未排序序列末尾

  3. 重复步骤2,直到排序完成

时间复杂度

可以看到selectionsort函数代码中有两层循环,因比时间复杂度为O(n^2)

代码实现

//每次找到最大(小)放在最左(右)端 
#include<bits/stdc++.h>
using namespace std;
template <typename T>
void selectionsort(T arr[],int len){for(int i=0;i<len -1;i++){T max =0;for(int j=1;j<len-i;j++){if(arr[j]>arr[max]){max=j;}}swap(arr[max],arr[len-i-1]);}
}
int main(){int arr[] = {61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62};int len = (int) sizeof(arr) / sizeof(*arr);selectionsort(arr, len);for (int i = 0; i < len; i++) {cout << arr[i] << " ";}cout << endl;float arrf[] = {17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5, 25.4, 28.6, 4.4, 23.7, 5.4};int lenf = sizeof(arrf) / sizeof(*arrf);selectionsort(arrf, lenf);for (int i = 0; i < lenf; i++) {cout << arrf[i] << " ";}return 0;
}

运行截图:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/520827.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo基础入门二

8、Dubbo协议 服务调用 8.1 服务端 启动过程深入分析 我们查看一下服务启动的过程 ProtocolFilterWrapper.export 好我们进入DubboProtocol.export 创建服务 分析我们的Handler 我们接着返回刚才位置 下面的super方法里面会创建服务&#xff0c;ChannelHandlers.wrap会对hand…

【Proteus仿真】【51单片机】井盖安全检测装置设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用LCD1602液晶显示模块、WIFI模块、蜂鸣器、LED按键、ADC PCF8591、角度/可燃气检测传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD16…

【MATLAB 】 EMD信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 展示出图效果 1 EMD信号分解算法 EMD 分解又叫经验模态分解&#xff0c;英文全称为 Empirical Mode Decomposition。 EMD 是一种信号分解方法&#xff0c;它将一个信号分解成有限个本质模态函数 (EMD) 的和&#xff0c…

掌握Docker容器监控:Docker命令与Prometheus的协同作战(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker入门到精通》 《k8s入门到实战》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Docker简介 2、为什么要对Docker容器实行监控 3…

【智能家居入门1之环境信息监测】(STM32、ONENET云平台、微信小程序、HTTP协议)

作为入门本篇只实现微信小程序接收下位机上传的数据&#xff0c;之后会持续发布如下项目&#xff1a;①可以实现微信小程序控制下位机动作&#xff0c;真正意义上的智能家居&#xff1b;②将网络通讯协议换成MQTT协议再实现上述功能&#xff0c;此时的服务器也不再是ONENET&…

为什么电容器放电电阻器现在被强制要求作为基本安全装置

在电子产品中&#xff0c;电容器放电电阻器或泄放电阻器是与高压电源电路的输出并联的电阻器&#xff0c;其明确目的是释放存储在电源滤波电容器中的剩余电荷。 例如&#xff0c;开关模式电源使用桥式整流器将交流市电转换为 320V&#xff08;市电电压为 220/240V&#xff09;或…

先进电机技术 —— 编码器

一、编码器 电机编码器是一种用于检测和反馈电动机转轴位置、旋转速度和方向的传感器装置。它在电机控制系统中起到关键作用&#xff0c;通过将机械运动转换为电信号&#xff0c;帮助控制器精确控制电机的动态性能。 编码器主要组成 1. **光学或磁性传感元件**&#xff1a;基于…

VSCode报错:/bin/sh: python: command not found

背景 以前都是直接用txt写python&#xff0c;然后直接命令行运行。 这次涉及的代码较多&#xff0c;决定用编译器。 写好的一段python点击运行报错&#xff01; 问题描述 因为我本地安装的是python3&#xff0c;但是vscode用的是另一个路径的python&#xff0c;所以找不到 解…

IDEA自定义Maven仓库

Maven 是一款广泛应用于 Java 开发的工具&#xff0c;其作用类似于一个全自动的 JAR 包管理器&#xff0c;能够方便地导入开发所需的相关 JAR 包。在使用 Maven 进行 Java 程序开发时&#xff0c;开发者能够极大地提高开发效率。以下是关于如何安装 Maven 以及在 IDEA 中配置自…

【C++】学习记录

一、第一个C程序 #include<iostream> using namespace std;int main() {cout << "Hello World!";return 0; } 二、数据类型、变量与常量、运算符 2.1 数据类型 2.2 变量与常量 2.3 运算符 三 、判断语句&#xff08;if-else、switch-case&#xff09; …

开源分子对接程序rDock使用方法(1)-Docking in 3 steps

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、Docking in 3 steps 标准对接rDock 的基本对接步骤及注意事项 二、 三步对接案例Step 1. 结构文件准备Step 2. 产生对接位点Step 3. 运行分子对接3.1 检查输入文件3.2 测试-只进行打分3.3 运行…

绝地求生:PUBG2024萌新入坑指南四排建议避坑

PUBG自2017年起至今已近7个年头了&#xff0c;许多游戏玩家都体验过这款游戏&#xff0c;但也有相当多的玩家对这种模式不感冒。 游戏市场日新月异&#xff0c;经过多年发展&#xff0c;PUBG这款游戏不可避免的衰落&#xff0c;哪怕他本体免费了。 闲游盒免费给这款游戏续了一…