数据结构:选择排序
上一篇我们讲了插入排序这一篇我们来讲选择排序。因为堆排序之前我们有详细讲过所以这里只给出堆排序的思路有兴趣的可以看一看。选择排序选择排序就是从数组中选出最小值和最大值最小值放在第一个位置最大值放在最后一个位置依次执行直到排成有序数组为止。直接选择排序直接选择排序就是从begin到end范围中获取最大值和最小值将最小值放到begin位置最大值放到end位置。依次执行直到排成有序数组为止。思路比如说我们有以下数组我们把数组起始位置作为begin末尾作为end从中找出最小值mini和最大值maxi。我们将最小值mini位置和begin位置数据交换一下然后将最大值maxi位置和end位置数据交换一下使得最小值放到begin位置最大值放到end位置。然后beginend- -再从beign到end范围中找出最小值mini和最大值maxi。将mini和begin数据交换maxi和end数据交换。然后beginend- -继续从begin到end范围中找最小值和最大值。此时我们发现maxi在begin位置如果我们继续直接交换mini和beginmaxi和end就会发生这样一件事。我们发现最小值没有来到begin位置最大值也没有到end位置这是为什么呢maxi在begin位置的时候我们先交换的是begin和mini位置的数据这会导致maxi被交换到了mini的位置。因此当begin maxi的时候我们要让maxi mini这步的意义是存储begin被交换后maxi当前所处的位置这样end和maxi交换才不会出错。## 代码实现综上所述我们排序的循环条件是begin end当end begin的时候则说明排序结束了。然后初始情况下begin 0end n - 1;每次找到最小值最大值并放到beginend位置后beginend–。接下来我们定义mini和maxi我们让它们一开始等于begin然后从begin 1到end位置遍历一遍找最大值和最小值。因为我们是先将最小值放到begin处所以要判断begin maxi是否成立如果成立则让maxi mini记录交换后最大值的位置。如果我们是先将最大值放到end处则需要判断end mini成立则让mini maxi。然后将mini处数据和begin处交换maxi处数据和end处交换。这个代码就写好了。我们来简单测试一下。结果符合预期说明代码没什么问题。时间复杂度该算法嵌套了两层循环外层因为是两边同时查找循环次数缩短到了 n/2内层循环总次数也相当于一个公差为 -2 的等差数列之和总的来说无论什么情况该算法时间复杂度为 O(n2)。堆排序如果有兴趣的可以看看这篇文章详细内容不再赘述。数据结构:堆排序堆排序是利用堆的思想来进行排序的算法将原数组通过向上/向下调整算法调整成一个大堆然后堆顶和堆底元素数组开头和末尾进行交换数组大小 size–再调整前 size 个元素保证成为一个大堆结构循环往复直到 size 0排序结束。voidSwap(int*x,int*y){inttmp*x;*x*y;*ytmp;}//向下调整算法voidAdjustDown(int*arr,intparent,intn){intchildparent*21;//左孩子while(childn){if(child1narr[child1]arr[child])child;if(arr[parent]arr[child]){Swap(arr[parent],arr[child]);parentchild;childparent*21;}elsebreak;}}//向上调整算法AdjustUp(int*arr,intchild){intparent(child-1)/2;while(child0){if(arr[parent]arr[child]){Swap(arr[parent],arr[child]);childparent;parent(child-1)/2;}elsebreak;}}//堆排序voidHeapSort(int*arr,intn){//建大堆for(inti(n-1-1)/2;i--;i0){AdjustDown(arr,i,n);}//排序while(n0){//交换堆顶和堆底元素Swap(arr[0],arr[n-1]);n--;AdjustDown(arr,0,n);}}

相关新闻

3个维修隐坑|东莞笔记本插耳机仍外放自查,80%不用更换声卡

3个维修隐坑|东莞笔记本插耳机仍外放自查,80%不用更换声卡

1. 前言日常办公、网课学习时,笔记本音频异常的情况时有发生。明明耳机已经插紧,机身扬声器依旧持续发声,耳机完全没有音频输出。不少用户分不清软件故障和硬件损坏,直接选择送修。结合东莞本地长期接修的案例来看,这类…

2026/8/26 17:31:05 阅读更多 →
2026华为OD面试题076:表达式括号匹配

2026华为OD面试题076:表达式括号匹配

题目描述 给一个数学表达式,比如 (1+(2+3)*(3+(8+0))+1-2),今天不算它的值,只看括号用得对不对。 括号里面的表达式可能有空格、可能有错误,这些都不管,只关心括号本身配不配对。 输入描述:给出一行表达式,长度不超过 100。 输出描述:如果括号匹配正确,输出括号的…

2026/8/26 17:31:05 阅读更多 →
【中国方言题库|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致

【中国方言题库|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致

本地应用最容易出现的状态问题,并不是“数据完全没保存”,而是两套状态不同步:用户刚收藏题目,当前按钮已经变色,但返回首页统计仍是旧数字;删除错题后列表消失,重新启动又回来;设置…

2026/8/26 17:31:03 阅读更多 →

最新新闻

柔性生产系统技术解析:人形机器人如何实现换型换线与自适应工艺执行

柔性生产系统技术解析:人形机器人如何实现换型换线与自适应工艺执行

一、为什么刚性生产正在失效?传统刚性制造系统(Rigid Manufacturing System, RMS)的架构设计遵循"专用化"原则:特定的机械结构、固化的控制逻辑、预定义的工艺参数,所有设计决策都指向单一目标——在既定产品…

2026/8/26 18:09:44 阅读更多 →
XAML Border 控件完全教程

XAML Border 控件完全教程

一、Border 是什么在 WPF、.NET MAUI、Xamarin.Forms、UWP、WinUI 等 XAML 技术栈中&#xff0c;Border 是一个装饰性布局容器。它的核心职责只有一个&#xff1a;给单个子元素添加边框、背景、圆角和内边距等视觉装饰。二、最基础的用法 <Border Background"Li…

2026/8/26 18:09:44 阅读更多 →
涌现现象模拟

涌现现象模拟

>涌现现象1. 没有总控制器&#xff1a;没有代码直接指挥群体怎么流动、怎么编队&#xff1b;2. 每个个体只有 3 条极简局部规则&#xff1a;a.向同伴平均位置靠近b.和离得太近的个体保持距离c.和周围同伴运动方向对齐涌现结果&#xff1a;大量小球自发形成群组、分流、盘旋&…

2026/8/26 18:09:44 阅读更多 →
09 给现有系统接入 Agent 能力:AgentBridge一个非侵入式的开源实践

09 给现有系统接入 Agent 能力:AgentBridge一个非侵入式的开源实践

这篇文章不是“我发现了一个好工具”&#xff0c;而是源于我在业务系统 AI 接入中反复遇到的同一个需求&#xff1a;现有系统有数据、有接口&#xff0c;要“加 AI 能力”&#xff0c;但没有人想推倒重来。这个系列前几篇讲了生产级 Agent 的架构、能力分层、评测体系&#xff…

2026/8/26 18:09:44 阅读更多 →
你们家Grok插件好像没有发现可以批量导出的功能?这其实是个技术分水岭

你们家Grok插件好像没有发现可以批量导出的功能?这其实是个技术分水岭

你们家Grok插件好像没有发现可以批量导出的功能&#xff1f;这其实是个技术分水岭 做技术内容归档的朋友大概都经历过这种时刻&#xff1a;对着上百个Grok对话记录&#xff0c;想批量导出做知识库沉淀&#xff0c;却发现插件面板里只有孤零零的“导出当前对话”按钮。评论区里开…

2026/8/26 18:09:44 阅读更多 →
Kappa一致性结果解读:观察一致性与期望一致性的比较

Kappa一致性结果解读:观察一致性与期望一致性的比较

Kappa一致性检验结果解读Kappa一致性检验是用于衡量两种评价方法或两位评价者对同一对象评价一致性程度的统计方法。Kappa系数考虑了随机因素造成的一致性&#xff0c;能够更客观地反映实际一致性水平。本研究使用SPSSAU软件&#xff0c;对医生A与医生B的诊断判定结果进行Kappa…

2026/8/26 18:08:43 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要&#xff1a; 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数&#xff08;random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录&#xff1a; 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中&#xff0c;主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段&#xff0c;转入了政务服务的常态化落地应用&#xff1b;在实际使用过程中&#xff0c;它能自主理解办事需求、辅助完成填报申报、开展材料预审&#xff0c;并联动多个系统协同作业&#xff0c;真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态&#xff0c;宏观上观察到的光是由无数个微观的光量子组成的&#xff0c;每个光子在产生的瞬间&#xff0c;其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前&#xff0c;在微观层面&#xff0c;每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”&#xff0c;而是SIP会话的动态重定向你有没有遇到过这样的场景&#xff1a;客服坐席A正在和客户通电话&#xff0c;突然需要把这通对话无缝转给专家坐席B&#xff0c;客户完全感知不到中间的断连——既没听到忙音&#xff0c;也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack&#xff1f;如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法&#xff0c;那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →