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

希尔排序快速排序归并排序

希尔排序:插入排序的改良版,先取一个增量d,d=n/2,再从数列的第一个元素开始,每隔d个取数,将这几个数排序,再将d/2,依旧从第一个数开始,相隔d取数排序,直到d取1,一定可以将原数列排列完整。相比于插入排序,希尔排序每轮进行排序的元素较小,每轮排序的数更接近有序数列,充分发挥插入排序在较小数列和较有序数列性能更好的的优点。

快速排序:使用一个基准,作为中间值,小于这个基准的元素放在左边,大于的放在右边。记有m个元素在左边,执行一次后,再将左边m个元素进行一次排序,右边进行一次排序,直到l=r。

int a[100];int partition(int l,int r)
{int m=l;               //m是分组数列的第一个元素int t=a[r];             //将队尾标记为基准for(int i=l;i<r;i++)   {if(a[i]<t)          {swap(a[i],a[m]);    //将小于基准数的元素放在该组数列前m++;               //m可以向后移}}swap(a[m],a[r]);return m;                //m之前的元素都比基准数小
}void quicksort(int l,int r)
{if(l<r){int i=partition(l,r);quicksort(l,i-1);    //基准数在中间,一定是拍好序的quicksort(i+1,r);}
}

快速排序和希尔排序是不稳定的排序,若数列中两个元素的值一样,则可能改变两个元素的顺序。

归并排序:先将整个数列离散范围n个部分,再将这n个数两两合并的同时排序,以此分组继续归并,排序。

int a[10],b[10];void merge(int l,int mid,int r)
{int i=l,j=mid+1,t=0;while(i<=mid&&j<=r)               //分为左右两个组,如果左边的组元素比右边的小,则将左边的元素进入b数组,反之则将右边的进入。{if(a[i]<a[j])b[t++]=a[j++];elseb[t++]=a[i++];}while(i<=mid) b[t++]=a[i++];      //将左右还剩余的部分进入b数组while(j<=r) b[t++]=a[j++];for(i=0;i<t;i++) a[l+i]=b[i];     //将已经排列好的数放回原数列
}void mergesort(int l,int r)
{if(l<r)                             //最先开始将l=0,r=n-1{int mid=(l+r)/2;                //按照先左后右的形式逐渐分组mergesort(l,mid);mergesort(mid+1,r);merge(l,mid,r);                 //将数列离散化后开始合并,离散的最小单位为2}
}
http://www.rkmt.cn/news/45944.html

相关文章:

  • 2025 年 11 月粘度计厂家推荐排行榜,在线粘度计,旋转粘度计,振动粘度计,实验室旋转粘度计,反应釜在线粘度计公司推荐
  • flask: 用Flask-Uploads实现文件上传
  • 2025 年 11 月冲压件厂家推荐排行榜,新能源冲压件,光伏冲压件,精密冲压件,异形冲压件,五金冲压件,铝冲压件,汽配冲压件,不锈钢冲压件,家具冲压件公司推荐
  • 日总结 24
  • P4511 日程管理
  • 新编故事 | 噪音
  • 20232303 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • 2025 年 11 月润滑油厂家推荐排行榜,工业润滑油,汽车润滑油,发动机润滑油,甲醇发动机润滑油,全合成润滑油公司精选
  • 172. 阶乘后的零
  • 微服务已死?别再盲目跟风微服务!这3种情况下单体架构更适合你。
  • Oracle LogMiner实战指南:误删误改数据的救命稻草
  • Spring 事务 - 实践
  • Spring AI Alibaba 项目源码学习(二)-Graph 定义与描述分析
  • 20232422 2024-2025-1 《网络与系统攻防技术》实验四实验报告
  • SPI 设备与多从机冲突的解决之道:片选管理、CS 去抖与总线隔离策略 - 实践
  • pythontip 字符串转为字典
  • JavaWeb04-JUnit
  • 哪款学习机适合小学生用?2025年11月多款主流品牌告诉你如何选
  • AIGC系统
  • [GESP202303 二级] 百鸡问题
  • P11362 [NOIP2024] 遗失的赋值 题解
  • CF 2070F Friends and Pizza
  • 上菱空调维修热线电话-24小时全国统一报修
  • 102302139 尚子骐 数据采集与融合作业2
  • 深入解析:Redis技术应用
  • HTTP 的方法和状态码 - 指南
  • 华凌燃气灶维修全国各售后号码《今日汇总》
  • P12504 「ROI 2025 Day1」树上的青蛙
  • 目前广州往返珠海网约车软件
  • 利用RFM模型对客户进行分类