当前位置: 首页 > 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.cnnetsun.cn/news/2935220.html

相关文章:

  • Xenos:Windows DLL注入的3大核心优势与实战指南
  • 猫抓浏览器扩展:网页视频音频资源嗅探下载的完整指南
  • 如何用GenomicSEM解锁多性状遗传分析:从新手到专家的完整指南
  • i.MX27 NAND Flash控制器:写保护、ECC与启动模式深度解析
  • 一站式终结Visual C++运行库烦恼:VisualCppRedist AIO终极解决方案
  • CS Demo Manager:免费开源CS比赛录像分析与战术复盘终极指南
  • 重磅更新|定距测量帮您风管分节、支架排布一步到位
  • paperxie 毕业论文智能撰写模块:分步式操作拆解,适配本硕博全层次毕设创作
  • 2026创新项目实训-个人博客(八)
  • MPC8533E内存映射配置:本地访问窗口(LAW)原理与实战详解
  • PyTorch之Tensor 内存机制:为什么 contiguous 很重要
  • 磁盘操作演示
  • 小白程序员必看:收藏这份智能体循环架构学习指南,轻松入门大模型开发
  • 如何高效下载网页视频:猫抓浏览器扩展完整指南
  • DLSS Swapper终极教程:一键智能切换DLSS版本,彻底释放显卡性能潜力
  • 如何高效使用Forza Mods AIO:免费提升极限竞速游戏体验的实用指南
  • ESP-CSI无线感知技术终极指南:从信道状态信息到智能环境监测
  • Kafka Kerberos认证实战:手把手解决`sasl.kerberos.service.name`配置与主机域名那些坑
  • 如何快速上手暗黑破坏神2存档编辑器:完整网页版角色修改指南
  • PowerPC e300缓存架构实战:WIMG属性与一致性协议详解
  • 终极Windows系统VC++运行库一体化部署解决方案
  • 终极10分钟快速上手ESP-CSI:Wi-Fi信道感知室内定位完整指南
  • Windows 11优化指南:用Win11Debloat打造纯净高效的系统体验
  • 避开这3个坑,用Python仿真演化博弈才算入门(附NetworkX代码调试心得)
  • 2026效果最好的AI写歌软件盘点!6款工具实测推荐,新手首选MELO音乐
  • 深入解析Nexus Port Controller与JTAG调试接口:原理、配置与实战
  • 终极指南:3分钟免费解锁IDM完整版,永久享受极速下载
  • 告别手动修改:一款智能网页文本批量替换工具让你效率翻倍
  • 波兰跨境货物清关全流程指南
  • i.MX嵌入式Linux开发:IOMUX、GPIO与电源管理驱动深度解析