排序(选择和快排)
选择排序基本思想每一次从待排序的数据元素中选出最小或最大的一个元素存放在序列的起始位置直到全部待排序的数据元素排完直接选择排序的特性总结直接选择排序思考非常好理解但是效率不是很好。实际中很少使用时间复杂度O(N^2)空间复杂度O(1)稳定性不稳定voidSwap(int*p1,int*p2){inttmp*p1;*p1*p2;*p2tmp;}//选择排序voidSelectSort(int*a,intn){intbegin0,endn-1;while(beginend){intminibegin,maxibegin;for(intibegin1;iend;i){if(a[i]a[maxi]){maxii;}if(a[i]a[mini]){minii;}}Swap(a[begin],a[mini]);if(beginmaxi)maximini;Swap(a[end],a[maxi]);begin;--end;}}快速排序基本思想:快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法其基本思想为任取待排序元素序列中的某元素作为基准值按照该排序码将待排序集合分割成两子序列左子序列中所有元素均小于基准值右子序列中所有元素均大于基准值然后最左右子序列重复该过程直到所有元素都排列在相应位置上为止.快速排序的特性总结快速排序整体的综合性能和使用场景都是比较好的所以才敢叫快速排序时间复杂度O(N*logN)空间复杂度O(logN)稳定性不稳定voidquickSort(int*a,intleft,intright){if(leftright)return;intkeyarr[left];// 以left为基准值intileft,jright;while(ij){// 从右往左找比key小的while(ijarr[j]pivot){j--;}if(ij){arr[i]arr[j];}// 从左往右找比pivot大的while(ijarr[i]key){i;}if(ij){arr[j--]arr[i];}}arr[i]key;quickSort(arr,left,i-1);quickSort(arr,i1,right);}上述是快速排序的基础代码voidSwap(int*p1,int*p2){inttmp*p1;*p1*p2;*p2tmp;}voidInsertSort(int*a,intn){for(inti0;in-1;i){intendi;inttmpa[end1];while(end0){if(tmpa[end]){a[end1]a[end];--end;}else{break;}}a[end1]tmp;}}intGetMidi(int*a,intleft,intright){intmidi(leftright)/2;if(a[left]a[midi]){if(a[midi]a[right]){returnmidi;}elseif(a[left]a[right]){returnright;}else{returnleft;}}else{if(a[midi]a[right]){returnmidi;}elseif(a[left]a[right]){returnleft;}else{returnright;}}}voidQuickSort(int*a,intleft,intright){if(leftright)return;// 小区间优化不再递归分割排序减少递归的次数if((right-left1)10){InsertSort(aleft,right-left1);}else{// 三数取中intmidiGetMidi(a,left,right);Swap(a[left],a[midi]);intkeyileft;intbeginleft,endright;while(beginend){// 右边找小while(beginenda[end]a[keyi]){--end;}// 左边找大while(beginenda[begin]a[keyi]){begin;}Swap(a[begin],a[end]);}Swap(a[keyi],a[begin]);keyibegin;// [left, keyi-1] keyi [keyi1, right]QuickSort(a,left,keyi-1);QuickSort(a,keyi1,right);}}上述的代码是进行优化过的快速排序,相比基础的快排,加入了取中GetMidi函数来降低基准值是极值的最坏可能,并在数量少于一定数量时将快排转为插入排序来提高算法的效率由于基础的快排较为抽象下面用一个视频进一步促进理解屏幕录制 2026-03-10 104900

相关新闻

2026技能网络领航者:SkillNet进化引擎深度测评(20万+多源技能覆盖)

2026技能网络领航者:SkillNet进化引擎深度测评(20万+多源技能覆盖)

2026技能网络领航者:SkillNet进化引擎深度测评(20万多源技能覆盖) SkillNet 是由浙江大学、阿里巴巴、蚂蚁集团等 20 余家机构联合推出的大规模 AI 技能开放基础设施(全拼:Skill Network,即“技能网络”&am…

2026/7/12 17:51:32 阅读更多 →
2026年餐饮新风口:小而美模式为何能成行业TOP3增长点?

2026年餐饮新风口:小而美模式为何能成行业TOP3增长点?

我们团队在实践中发现,当前餐饮行业正面临一个结构性矛盾:一边是大型连锁品牌凭借标准化扩张占据市场,另一边是消费者对个性化、体验感和空间效率的要求日益提升。传统“大而全”的餐厅模式,在租金、人力成本高企和翻台率瓶颈的挤…

2026/7/14 22:37:00 阅读更多 →
【老王架构专栏】盘点国内 OpenClaw 一键部署平台

【老王架构专栏】盘点国内 OpenClaw 一键部署平台

摘要 2026 年,OpenClaw(小龙虾)的火爆让 AI Agent 真正从实验室走向了生产力窗口。然而,对于身处数字化转型深水区的企业架构师而言,简单的“一键部署”只是入场券。面对企业内部林立的系统烟囱、缺乏 API 的老旧 ERP、…

2026/7/15 1:47:45 阅读更多 →

最新新闻

国产PLC通信避坑:C#解决信捷PLC数据丢包与断线重连实战

国产PLC通信避坑:C#解决信捷PLC数据丢包与断线重连实战

前言:国产PLC的"隐形门槛" 在工控圈子里,西门子、三菱的通信库被研究得透透的,随便搜一下就是现成的轮子。但当你接手一个使用信捷XC/XD系列PLC的项目时,往往会发现:文档少、社区小、坑还特别多。 去年我们给…

2026/7/16 0:38:37 阅读更多 →
C#上位机+ONNX Runtime:毫秒级AI视觉缺陷检测系统落地指南

C#上位机+ONNX Runtime:毫秒级AI视觉缺陷检测系统落地指南

前言:当"算法Demo"撞上"产线节拍" 在工业视觉圈子里,有一个心照不宣的共识:算法工程师交付的Python Demo和现场实际运行的C#上位机之间,隔着一道巨大的工程鸿沟。 我见过太多这样的项目:算法团队…

2026/7/16 0:38:37 阅读更多 →
影刀RPA 数据合并:多表关联与拼接

影刀RPA 数据合并:多表关联与拼接

影刀RPA 数据合并:多表关联与拼接 作者:林焱 什么情况用什么 数据分散在多个文件里——销售数据在A表、客户信息在B表、产品信息在C表,需要合并成一张完整报表。或者按月分开的12个文件需要拼成一整年的数据。在影刀RPA里用pandas的merge、c…

2026/7/16 0:36:35 阅读更多 →
美团开发岗高频算法题清单

美团开发岗高频算法题清单

美团开发岗的算法难度整体不一定最卷,但有一个很鲜明的特点:题目很贴近后台开发常见的数据结构能力。 也就是说,美团更像是在通过算法题看你是不是一个扎实的后台工程师,而不是单纯看你刷了多少偏题怪题。 美团算法面试特点 偏经…

2026/7/16 0:36:35 阅读更多 →
鸿蒙 ArkTS 实战:Cycling Safety Light 从出行记录到状态反馈完整解析

鸿蒙 ArkTS 实战:Cycling Safety Light 从出行记录到状态反馈完整解析

鸿蒙 ArkTS 实战:Cycling Safety Light 从出行记录到状态反馈完整解析 前言 Cycling Safety Light 是一个面向 出行管理与通勤习惯 的鸿蒙 ArkTS 小应用。记录出行条目、站点信息和提醒备注,适合日常出行复盘。 本文基于 entry/src/main/ets/pages/Ind…

2026/7/16 0:32:34 阅读更多 →
Azure Local离线部署之Fallback日志收集

Azure Local离线部署之Fallback日志收集

1. 适用场景 官方原文:"Use appliance fallback logging to collect and send logs to Microsoft when the Azure Local disconnected operations appliance virtual machine (VM) is down. Use this method if standard log collection cant start and you ne…

2026/7/16 0:30:33 阅读更多 →

日新闻

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

本篇深入剖析 ImportantDays 项目的数据持久化方案——基于 HarmonyOS ArkData 模块的 Preferences 轻量级存储,以及 PreferenceUtil 工具类的单例封装。一、HarmonyOS 数据存储方案对比 HarmonyOS 提供了多种数据存储方案:方案适用场景特点Preferences轻…

2026/7/16 0:08:27 阅读更多 →
Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

2026/7/16 0:08:27 阅读更多 →
鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

从鸿蒙 7(HarmonyOS NEXT)开始,官方全面完成了从 ohos.* 零散模块到 kit.* 领域套件的体系重构。对开发者来说,第一道门槛不是 API 用法变化,而是统一的导入规范——旧体系默认导入、解构导入混用的混乱局面被彻底终结…

2026/7/16 0:10:29 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/15 21:09:01 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/15 19:42:20 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/15 17:52:08 阅读更多 →

月新闻