当前位置: 首页 > news >正文

经典排序算法

本章包含了插入排序中的直接插入排序,希尔排序;选择排序中的选择排序,堆排序;交换排序中的冒泡排序,快速排序;以及归并排序。

插入排序

1.直接插入排序

public static void insertionSort(int[] arrays){//将后面的数字插入到前面排好的序列中 for(int i=0;i<arrays.length;i++){ int tmp=arrays[i]; int m=i; for(int j=i-1;j>=0;j--){ if(arrays[j]>tmp){ arrays[j+1]=arrays[j]; m=j; } } arrays[m]=tmp; } }

2.希尔排序

public static void shellsort(int[] arr){//直接插入排序的优化,先分组按直接插入排序进行,组别间距再逐渐减小,直到变为1,就变成同一组了 int gap=arr.length; while(gap>=1){ for(int i=0;i<arr.length;i++){//这里的i按减一进行,就可以使得组别交替进行 int tmp=arr[i]; int m=i; for(int j=i-gap;j>=0;j=j-gap){ if(arr[j]>tmp){ arr[j+gap]=arr[j]; m=j; } } arr[m]=tmp; } gap=gap/2; } }

选择排序

1.选择排序

public static void chooseSort(int[] arr){//每次挑中未排序队列中最大的将它放置在未排序队列的最末尾 for(int i=0;i<arr.length;i++){ int max=0; int m=0; for(int j=0;j<arr.length-i;j++){ if(arr[j]>max){ max=arr[j]; m=j; } } int tmp=arr[arr.length-1-i]; arr[arr.length-1-i]=max; arr[m]=tmp; } }

2.堆排序

public static void heapSort(int[] arr){ int size=arr.length-1; creatHeap(arr,size); for(int i=0;i<arr.length;i++){ int tmp=arr[size]; arr[size]=arr[0]; arr[0]=tmp; size--; creatHeap(arr,size); } } private static void creatHeap(int[] arr,int size) { for(int i=(size-1)/2;i>=0;i--){ sifdown(arr,i,size); } } private static void sifdown(int[] arr, int p,int size) { int c=p*2+1; while(c<=size){ if((c+1)<size&&arr[c]<arr[c+1]){ c++; } if(arr[p]<arr[c]){ int tmp=arr[p]; arr[p]=arr[c]; arr[c]=tmp; } p=c; c=p*2+1; } }

交换排序

1.冒泡排序

public static void BubbleSort(int[] arr){ for(int i=0;i<(arr.length-1);i++){ for(int j=0;j<(arr.length-1-i);j++){ if(arr[j]>arr[j+1]){ int tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } } }

2.快速排序

public static void QuickSort(int[] arr){ Quick(arr,0,arr.length-1); } public static void Quick(int[] arr,int start,int end){ if(start>=end){ return; } int index= pattern(arr,start,end); Quick(arr,start,index-1); Quick(arr,index+1,end); } private static int pattern(int[] arr, int start, int end) { int top=start; int late=end; int tmp=arr[start]; while(top<late){ while(top<late&&arr[late]>=tmp){ late--; } while (top<late&&arr[top]<=tmp){ top++; } int h=arr[top]; arr[top]=arr[late]; arr[late]=h; } arr[start]=arr[top]; arr[top]=tmp; return top; }

归并排序

public static void mergeSort(int[] arr) { if (arr == null || arr.length < 2) { return; } int[] temp = new int[arr.length]; mergeSort(arr, 0, arr.length - 1, temp); } private static void mergeSort(int[] arr, int left, int right, int[] temp) { if (left >= right) { return; } int mid = left + (right - left) / 2; mergeSort(arr, left, mid, temp); mergeSort(arr, mid + 1, right, temp); merge(arr, left, mid, right, temp); } private static void merge( int[] arr, int left, int mid, int right, int[] temp) { int i = left; int j = mid + 1; int index = left; while (i <= mid && j <= right) { if (arr[i] <= arr[j]) { temp[index++] = arr[i++]; } else { temp[index++] = arr[j++]; } } while (i <= mid) { temp[index++] = arr[i++]; } while (j <= right) { temp[index++] = arr[j++]; } for (int k = left; k <= right; k++) { arr[k] = temp[k]; } }
http://www.jsqmd.com/news/1018560/

相关文章:

  • 深入解析e300 PowerPC核心MMU:从虚拟内存到嵌入式系统实战
  • 每日AI新闻推送 | 2026年06月15日
  • 如何用GenomicSEM解锁多性状遗传分析:从新手到专家的完整指南
  • 2026年声音转换成文字怎么选?年付30元vs100元准确率差8哪款性价比更高
  • sdu软件学院创新实训 个人博客6
  • 深入解析Hackintool:黑苹果系统配置的完整实战指南
  • OBS Spout2插件终极指南:突破视频分辨率限制的跨应用共享方案
  • 2026威海黄金回收计价方式与实体门店实测 - 余生黄金回收
  • 2026年技能学习视频总结工具实测对比主流工具哪个好用,差距竟然这么大
  • 从“黑盒”到可见:2026年国内企业级智能会话解决方案盘点
  • 低价代办注册和正规财税公司,差别到底在哪?| 5个维度对比 - 欢欢在创业
  • Xenos:Windows DLL注入的3大核心优势与实战指南
  • 2026年各大厂AI模型信息全景周报
  • Unlock-Music终极指南:5分钟学会浏览器音乐解锁与格式转换
  • 2026福州黄金回收强者榜:合扬领跑全场,六大品牌综合实力逐一盘点 - 开心测评
  • Steam Deck终极模拟器配置工具:EmuDeck一键部署30+游戏平台完全指南
  • 8 款 AI 毕业论文写作工具深度横评,毕业生高效撰稿实测对比
  • 抖音直播弹幕爬虫:douyin-live-go让你轻松获取实时直播数据
  • MCIMX27嵌入式系统SDRAM与NAND Flash控制器配置实战指南
  • VRCT终极指南:5分钟快速上手VRChat实时翻译与语音转文字
  • 材质性能科普|深度拆解HMPP泵站优势,对比传统混凝土泵站,枣恒一体化泵站厂家专业答疑 - 泵站19832680777
  • MySQL连接池配置实战:彻底解决 ‘The last packet...‘ 报错(附MyBatis/Spring Boot示例)
  • 3分钟掌握Windows DLL注入:Xenos注入器终极指南
  • 从JSCPC看ACM省赛:除了刷题,你和金牌队还差这些实战技巧(环境/工具/协作篇)
  • PCIe配置空间核心寄存器详解:命令、状态与BAR实战指南
  • 终极指南:开源Windows Defender控制工具defender-control的技术原理与应用
  • i.MX27 NAND Flash控制器:写保护、ECC与启动模式深度解析
  • 武汉代理记账公司排行:合规省心的财税服务机构盘点 - 奔跑123
  • 帧生成技术破壁者:在NVIDIA显卡上解锁AMD FSR 3的跨界魔法
  • 多维聚合数据操作的三大安全原则与七种实战手法