数据结构——排序算法全总结:八大排序代码模板 + 408 真题
📅 2026/7/16 1:17:25
👁️ 次浏览
排序是 408 数据结构的必考内容每年选择题 2-3 道大题可能出现。这篇把八大排序的核心代码、复杂度、稳定性一次性理清。一、插入排序类1. 直接插入排序publicvoidinsertSort(int[]arr){for(inti1;iarr.length;i){intkeyarr[i];intji-1;while(j0arr[j]key){arr[j1]arr[j];j--;}arr[j1]key;}}2. 希尔排序publicvoidshellSort(int[]arr){for(intgaparr.length/2;gap0;gap/2){for(intigap;iarr.length;i){intji;inttemparr[j];while(j-gap0arr[j-gap]temp){arr[j]arr[j-gap];j-gap;}arr[j]temp;}}}二、交换排序类3. 冒泡排序publicvoidbubbleSort(int[]arr){for(inti0;iarr.length-1;i){booleanswappedfalse;for(intj0;jarr.length-1-i;j){if(arr[j]arr[j1]){swap(arr,j,j1);swappedtrue;}}if(!swapped)break;// 提前结束}}4. 快速排序publicvoidquickSort(int[]arr,intlow,inthigh){if(lowhigh)return;intpivotpartition(arr,low,high);quickSort(arr,low,pivot-1);quickSort(arr,pivot1,high);}privateintpartition(int[]arr,intlow,inthigh){intpivotarr[low];while(lowhigh){while(lowhigharr[high]pivot)high--;arr[low]arr[high];while(lowhigharr[low]pivot)low;arr[high]arr[low];}arr[low]pivot;returnlow;}三、选择排序类5. 简单选择排序publicvoidselectSort(int[]arr){for(inti0;iarr.length-1;i){intminIdxi;for(intji1;jarr.length;j){if(arr[j]arr[minIdx])minIdxj;}if(minIdx!i)swap(arr,i,minIdx);}}6. 堆排序publicvoidheapSort(int[]arr){for(intiarr.length/2-1;i0;i--)heapify(arr,i,arr.length);for(intiarr.length-1;i0;i--){swap(arr,0,i);heapify(arr,0,i);}}privatevoidheapify(int[]arr,inti,intn){intlargesti;intleft2*i1;intright2*i2;if(leftnarr[left]arr[largest])largestleft;if(rightnarr[right]arr[largest])largestright;if(largest!i){swap(arr,i,largest);heapify(arr,largest,n);}}四、其他排序7. 归并排序publicvoidmergeSort(int[]arr,intleft,intright){if(leftright)return;intmidleft(right-left)/2;mergeSort(arr,left,mid);mergeSort(arr,mid1,right);merge(arr,left,mid,right);}privatevoidmerge(int[]arr,intleft,intmid,intright){int[]tempnewint[right-left1];intileft,jmid1,k0;while(imidjright)temp[k]arr[i]arr[j]?arr[i]:arr[j];while(imid)temp[k]arr[i];while(jright)temp[k]arr[j];System.arraycopy(temp,0,arr,left,temp.length);}8. 基数排序publicvoidradixSort(int[]arr){intmaxArrays.stream(arr).max().getAsInt();for(intexp1;max/exp0;exp*10){countingSortByDigit(arr,exp);}}privatevoidcountingSortByDigit(int[]arr,intexp){int[]countnewint[10];int[]outputnewint[arr.length];for(intnum:arr)count[(num/exp)%10];for(inti1;i10;i)count[i]count[i-1];for(intiarr.length-1;i0;i--){intdigit(arr[i]/exp)%10;output[count[digit]-1]arr[i];count[digit]--;}System.arraycopy(output,0,arr,0,arr.length);}五、对比总结排序算法平均最好最坏空间稳定直接插入O(n²)O(n)O(n²)O(1)✅希尔排序O(n^1.3)O(n)O(n²)O(1)❌冒泡排序O(n²)O(n)O(n²)O(1)✅快速排序O(n log n)O(n log n)O(n²)O(log n)❌简单选择O(n²)O(n²)O(n²)O(1)❌堆排序O(n log n)O(n log n)O(n log n)O(1)❌归并排序O(n log n)O(n log n)O(n log n)O(n)✅基数排序O(d(nr))O(d(nr))O(d(nr))O®✅几个常考结论稳定的排序插入、冒泡、归并、基数不稳定的排序希尔、快速、选择、堆堆排序的最坏情况也是 O(n log n)快排最坏 O(n²)有序或逆序时 觉得有用的话点赞 关注【张老师技术栈】吧
图片中的文字提取是办公自动化中的高频需求——扫描件转文字、截图识别、发票信息提取。Python 中有两个主流的 OCR 库,这篇从安装到实战完整讲解。
一、方案选择:PaddleOCR vs Tesseract对比PaddleOCRTesseract中文识别⭐⭐⭐⭐⭐ 优秀⭐⭐⭐ 一般安装难…
📅 2026/7/16 1:17:25
在Python中,我们习惯了靠垃圾回收(GC)来自动管理内存。但在长生命周期的后端服务、大模型流式推理或复杂的分布式框架中,内存泄漏往往发生在悄无声息之间。最典型的场景是:第三方库或你自己写的闭包、全局缓存、事件监…
📅 2026/7/16 1:16:25
鸿蒙从 ohos 零散模块到 kit 领域套件、从 ArkUI V1 到 V2 响应式体系的升级,是架构级的底层重构。对于大型项目,全量重写风险高、影响业务迭代,必须遵循「分层推进、灰度落地、可测可回」的原则,在不中断业务的前提下逐步完成技术…
📅 2026/7/16 1:16:25
在实际编程工作中,选择合适的AI编程助手已经成为开发者提升效率的关键决策。面对市场上众多的AI模型,特别是GPT系列和Claude Opus系列的持续迭代,开发者需要基于具体项目需求、成本预算和技术特点做出理性选择。本文将通过实际测试对比&#…
📅 2026/7/16 2:09:43
1. EMC整改的行业现状与核心挑战在电子产品研发领域,EMC(电磁兼容性)问题就像房间里的大象——人人都知道它的存在,却常常在项目后期才被迫面对。根据我参与过的37个硬件项目统计,平均每个产品需要经历2.3轮EMC测试才能…
📅 2026/7/16 2:09:43
面试
模板方法是一种行为设计模式,核心思想是在抽象类中定义算法骨架,把可变的步骤放到子类实现。父类定死了执行顺序和通用逻辑,子类只负责实现具体细节。
模板方法由两个角色组成:
抽象类:其中 final 修饰的模板方法…
📅 2026/7/16 2:09:43
在 AI 内容创作领域,将长篇笔记、学术论文等复杂文档转化为结构清晰、易于理解的视觉化成果一直是许多研究者和开发者的痛点。传统方法往往需要手动整理、设计图表,耗时耗力且难以保证一致性。最近在实际项目中尝试使用 Fable 5 的 Artifacts 功能来处理…
📅 2026/7/16 2:09:43
基于Multisim的低频信号发生及处理系统电路设计实战指南在电子电路设计领域,低频信号发生与处理系统是基础且重要的组成部分,广泛应用于教学实验、科研测试和工业测量等场景。很多初学者在搭建这类系统时,常常面临电路设计复杂、参数调试困难…
📅 2026/7/16 2:09:43
如何快速获取网盘直链:LinkSwift下载助手完整使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…
📅 2026/7/16 2:08:43
1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…
📅 2026/7/16 0:00:02
前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…
📅 2026/7/16 0:00:02
1. 项目概述与核心价值 在高速数字系统、通信设备乃至精密测量仪器中,一个稳定、纯净且可精确调控的时钟信号,往往是整个系统稳定运行的“心跳”。无论是确保数据在光纤中无误传输,还是让ADC/DAC芯片精准采样,亦或是让多块FPGA板卡…
📅 2026/7/16 0:00:02
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/15 22:51:06
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/15 19:03:10
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/15 14:09:20
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/15 22:46:06
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/15 2:24:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/15 22:51:03