C++数据结构X篇_20_选择排序
文章目录
- 1. 选择排序原理
- 2. 选择排序原理核心代码
- 3. 选择排序时间消耗
1. 选择排序原理
选择排序:相对于冒泡排序,减少了交换次数,下图展示了选择排序的原理,具体仍需要结合代码分析。

2. 选择排序原理核心代码
//选择排序
void select_sort(int arr[], int length)
{int min = 0;for (int i = 0; i < length; i++){int min = i;for (int j = i + 1; j < length; j++){if (arr[j] < arr[i]){min = j;}}if (min != i){swap(&arr[i], &arr[min]);}}
}
3. 选择排序时间消耗
整体代码:
#include <iostream>
#include <time.h>
#include <sys/timeb.h>using namespace std;#define MAX 10000//获取系统当前时间,ms为单位
long getSystemTime()
{struct timeb tb;ftime(&tb);return tb.time * 1000 + tb.millitm;
}void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}//打印数组
void printArr(int arr[])
{for (int i = 0; i < 10; i++){cout << arr[i] << endl;}
}//选择排序
void select_sort(int arr[], int length)
{int min = 0;for (int i = 0; i < length; i++){int min = i;for (int j = i + 1; j < length; j++){if (arr[j] < arr[i]){min = j;}}if (min != i){swap(&arr[i], &arr[min]);}}
}int main()
{int arr[MAX];//生成随机数srand((unsigned int)time(NULL));for (int i=0;i<MAX;i++){arr[i] = rand() % MAX;}long tStart = getSystemTime();select_sort(arr, MAX);long tEnd = getSystemTime();cout << tEnd - tStart << endl;system("pause");return 0;
}
运行结果:时间消耗424ms,比冒泡排序改进版的时间消耗也少了很多

- 选择排序
相关文章:
C++数据结构X篇_20_选择排序
文章目录 1. 选择排序原理2. 选择排序原理核心代码3. 选择排序时间消耗 1. 选择排序原理 选择排序:相对于冒泡排序,减少了交换次数,下图展示了选择排序的原理,具体仍需要结合代码分析。 2. 选择排序原理核心代码 //选择排序 v…...
华为OD技术面试-最短距离矩阵(动态规划、广度优先)
背景 记录2023-10-21 晚华为OD三面的手撕代码题,当时没做出来,给面试官说了我的想法,评价:解法复杂了,只是简单的动态规范 或 广度优先算法,事后找资料记录实现方式。 题目 腐烂的橘子 问题描述ÿ…...
【代码规范】switch 块级的作用域问题
代码规范的一些事儿 问题 今日 Git 提交代码时,出现报错: error Unexpected lexical declaration in case block no-case-declarations 解决过程 我马上就去百度,就找到了这篇文章:解决 Unexpected lexical declaration in ca…...
PHP 基础/练习
练习 成绩定级 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>成绩定级脚本</title> </…...
TCP协议与UDP协议
UDP协议 UDP协议端的格式 16位UDP长度,表示整个数据报(UDP首部UDP数据)的最大长度;如果校验和出错,就会直接丢弃; UDP的特点 UDP传输过程类似寄信 无连接 知道对端的IP和端口号就直接进行传输,不需要建立连接; 不可靠 没有任何安全机制,…...
极智嘉(Geek+)柔性货箱到人拣选方案,助力Starlinks实现高效运营
近些年,电商业务席卷全球,一众企业蓬勃发展。比如沙特阿拉伯先进的物流与供应链解决方案供应商Starlinks的电子商务的销售额从6%增长到了23%。为满足日益增长的国际电商业务需求,以及订单交付时效性更高的要求,Starlinks与全球仓储…...
Hadoop3教程(三十一):(生产调优篇)异构存储
文章目录 (157)异构存储概述概述异构存储的shell操作 (158)异构存储案例实操参考文献 (157)异构存储概述 概述 异构存储,也叫做冷热数据分离。其中,经常使用的数据被叫做是热数据&…...
网络协议--UDP:用户数据报协议
11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联…...
vscode摸鱼插件开发
不知道大家在写代码的时候,摸不摸鱼,是不是时不时得打开一下微博,看看今天发生了什么大事,又有谁塌房,而你没有及时赶上。 为此,我决定开发一个vscode插件,来查看微博热搜 插件名称࿱…...
音频录制和处理软件 Audio Hijack mac中文版说明
Audio Hijack mac是一款功能强大的音频录制和处理软件,它可以帮助用户从各种来源捕获和处理音频。 首先,Audio Hijack具有灵活的音频捕获功能。它支持从多个来源录制音频,包括麦克风、应用程序、网络流媒体、硬件设备等等。你可以选择捕获整个…...
寻找二叉树一个节点的后继节点
后继节点:中序遍历的后一个节点 普通二叉树:中序遍历得到一个list,时间复杂度O(n) 本题的二叉树:有父节点的指针,后继节点与原节点的距离为1,因此可以直接通过父节点找到下一个节点 优化:节点…...
如何能够获取到本行业的能力架构图去了解自己的能力缺陷与短板,从而能清晰的去弥补差距?
如何能够获取到本行业的能力架构图去了解自己的能力缺陷与短板,从而能清晰的去弥补差距? 获取并利用能力架构图(Competency Model)来了解自己在特定行业或职位中的能力缺陷和短板,并据此弥补差距,是一个非常…...
红队打靶:Misdirection打靶思路详解(vulnhub)
目录 写在开头 第一步:主机发现与端口扫描 第二步:Web渗透(80端口,战术放弃) 第三步:Web渗透(8080端口) 第四步:sudo bash提权 第五步:/etc/passwd利…...
10.23归并排序
课上 归并排序 最大时,就是两个都是完全倒序,但注意一定有一个序列先用完,此时剩一个序列只有一个元素,不用比较,直接加入,所以就是nn-1, 最小时,是都是完全有序,且一个序列中的元…...
[C++]:2初识C++(auto) + 类和对象上:
[TOC](初识C(auto) 类和对象上) 一.初始C 1.auto关键字:(C11) 1.作为一个变量的类型给这个类型初始化,auto自动识别初始化这个变量值的类型,为auto类型的这个变量开辟一个合适的空间。 补充: 1.typeid(变量名).name—>可以打…...
大学英语试卷
大学英语试卷 If everyone learns to set forth facts and reason things out in social life, many of the contradictions are easy to ____. A. oblige B. engage C. resolve D. commitIf we let the fastest runner set the____, the others will fall behind. A. pace B.…...
SpringBoot Lombok的使用
目录 下载Lombok插件 Lombok的用法 获取日志对象 生成get,set方法 Lombok框架的实现原理 Lombok的常用注解 下载Lombok插件 要使用Lombok首先要确保idea安装了lombok插件 在项目中添加 lombok依赖 在<dependency>里右键生成点击edit starters 插件(没有就下载,可…...
后台管理系统SQL注入漏洞
对于edu来说,是新人挖洞较好的平台,本次记录一次走运的捡漏0x01 前景 在进行fofa盲打站点的时候,来到了一个后台管理处看到集市二字,应该是edu站点 确认目标身份(使用的quake进行然后去ipc备案查询) 网…...
变量常用函数
查看变量类型 type(变量名) 用来查询变量所指的对象类型 >>> a, b, c, d 20, 5.5, True, 43j >>> print(type(a), type(b), type(c), type(d)) <class int> <class float> <class bool> <class complex> 基础数据类型 # coding…...
从零学算法(LCR 157)
某店铺将用于组成套餐的商品记作字符串 goods,其中 goods[i] 表示对应商品。请返回该套餐内所含商品的 全部排列方式 。 返回结果 无顺序要求,但不能含有重复的元素。 示例 1: 输入:goods “agew” 输出:[“aegw”,“aewg”,“ag…...
【OpenClaw全面解析:从零到精通】第039篇:OpenClaw企业级应用完全指南:从30个场景选择到流程优化
上一篇 [第038篇] OpenClaw v2026.4.7v2026.4.8 深度解析:推理中心、记忆-wiki与多模态编辑能力全面升级 下一篇 未完待续 摘要 OpenClaw企业级应用正在成为2026年企业数字化转型的重要引擎。GitHub上已突破33万Star的这款开源AI Agent框架,通过多智能体…...
UE5 Android打包环境配置避坑指南:从4.26到5.6的版本适配与Pico部署
1. 环境准备:从零搭建UE5 Android开发环境 第一次用UE5给Pico设备打包Android应用时,我对着报错提示折腾了整整三天。后来才发现,问题出在环境配置的版本兼容性上。不同版本的UE5对JDK、SDK、NDK的要求差异很大,特别是从4.26升级…...
Qwen3.5-27B教育场景应用:学生作业图题自动解答+解题思路生成案例
Qwen3.5-27B教育场景应用:学生作业图题自动解答解题思路生成案例 1. 教育场景痛点分析 在传统教育场景中,学生遇到作业难题时往往面临以下困境: 解题资源有限:课后难以及时获得老师指导理解障碍:特别是图形类题目&a…...
Matlab r2023b Simulink 子系统封面自定义指南
1. 为什么需要自定义Simulink子系统封面? 作为一个从零开始学习Matlab Simulink的新手,我最初完全不明白为什么要在子系统上加封面。直到参与了一个机器人控制系统的团队项目,才深刻体会到这个功能的价值。想象一下,当你打开一个包…...
【动力心法】别把 PWM 当成魔法!撕碎理想执行器的线性幻觉,论“静摩擦”与“前馈补偿”的绝对镇压
摘要:在纯粹的数学世界里,只要有输入,就必然有输出。但在由钢铁、齿轮、密封圈和润滑油构成的物理世界中,能量必须先缴纳极其昂贵的“过路费”。无数软件开发者迷信于 PID 的数学反馈,天真地以为微小的误差能换来微小的…...
Calico IPIP 使用指南芈
本课概览 Microsoft Agent Framework (MAF) 提供了一套强大的 Workflow(工作流) 框架,用于编排和协调多个智能体(Agent)或处理组件的执行流程。 本课将以通俗易懂的方式,帮助你理解 MAF Workflow 的核心概念…...
Claude Code与Kimi跨平台部署及API调优实战
1. Claude Code与Kimi跨平台部署指南 最近在折腾AI编程助手时,我发现Claude Code和Kimi这两个工具搭配使用效果出奇的好。作为一个经常在不同操作系统间切换的开发者,我花了两周时间把Windows、macOS和Linux三个平台的部署都摸了个遍,今天就把…...
智能宠物喂食器项目复盘:那些硬件选型与软件调试中踩过的坑
智能宠物喂食器项目复盘:硬件选型与软件调试的实战避坑指南 去年夏天,我接手了一个看似简单却暗藏玄机的项目——为朋友开发一款能远程控制的智能宠物喂食器。本以为用常见的STM32加几个传感器就能轻松搞定,没想到从硬件选型到软件调试处处是…...
MMC-HVDC仿真模型及柔性直流输电相关基础模型集合
MMC-HVDC仿真模型,pscad柔性直流输电仿真mmc仿真模型,双端mmc模型,MMC为21电平NLM和均压控制,还有多端如张北直流电网以及基本mmc逆变器,自己为毕业网上收集的一些觉得有用的基础模型最近在折腾MMC-HVDC仿真࿰…...
计算机毕业设计:Python天气数据爬虫可视化分析系统 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...
