目录
- 一.归并排序
- 1.1归并排序引入
- 1.2归并排序的概念
- 1.3归并排序的原理
- 1.4实例说明
- 1.5具体步骤说明
- 1.6代码实现
- 1.7性能分析
一.归并排序
1.1归并排序引入
对于堆排序来说,因为用到了完全二叉树的深度是(log2n+1)的特性,所以效率就比较高,但是堆结构的设计比较复杂,现在我们想要可以直接利用完全二叉树来排序的方法,这个方法就是归并排序。

1.2归并排序的概念
归并排序是建立在归并操作上的一种有效的排序算法,归并排序对序列的元素进行逐层折半分组,然后从最小分组开始比较排序,合并成一个大的分组,逐层进行,最终所有的元素都是有序的。
1.3归并排序的原理
原理:假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子数列,再两两归并,如此重复直到得到一个长度为n的有序序列为止。
1.4实例说明
(1).以4,5,8,1,7,2,6,3为例,排序过程:
(2).以84,9,18,19,48,12,90,84,8,12为例,排序过程:
这里的两两合并指的是两个组合并;
每组的数据单独看是有序的。
1.5具体步骤说明
以实例中的第一个为例:
序列逐层拆分如下:
然后从下往上逐层合并,首先对第一层序列1(只包含元素4)和序列2(只包含元素5)进行合并
创建一个大序列,序列长度为两个小序列长度之和,A、B指针分别指向两个小序列的第一个元素,C指向大序列的第一个元素
比较A、B指向的元素,4小于5,将4填入C指向的元素,C、A往右移一位
此时,序列1已经没有元素,将序列2的元素依次填入大序列中
序列8和1,序列7和2,序列6和3,用同样的方式填入新的序列
接着,以4、5为序列1,1、8为序列2,继续进行合并
创建一个序列长度为4的大序列,A指向序列1的第一个元素4,B指向序列2的第一个元素1,C指向大序列的第一个元素
4和1比较,4大于1,1填入C指向的元素,C、B往右移一位
4和8比较,4小于8,4填入C指向的元素,C、A往右移一位
5和8比较,5小于8,5填入C指向的元素,C、A往右移一位
自此,序列1已经没有元素,将序列2的元素依次填入大序列中
序列2、7和序列3、6以同样的方式合并成新的序列
最后,将序列1、4、5、8和序列2、3、6、7以同样的方式继续合并成新的序列
所有元素均已排好。
1.6代码实现
void MergeSort(int *arr, int len)
{
for(int i=1; i<len; i*=2)// O(logn)
{
Merge(arr, len, i);
}
}
//一次划分函数 核心函数 //返回基准值最终所在下标
int Partition(int *arr, int left, int right)
{
//先讲arr数组里的[left, right]的第一个值 作为基准值
int tmp = arr[left];
while(left < right)
{
while(left<right && arr[right] > tmp)//左右边界没有相遇且当前右边的值大于基准值tmp
right--;
if(left < right)//如果此时,左右边界没有相遇,那就只能证明右边right找到了一个小于等于基准值tmp的值
{
arr[left] = arr[right];
}
else
{
break;
}
while(left<right && arr[left] <= tmp)//左右边界没有相遇且当前左边的值小于等于基准值tmp
left++;
if(left < right)//如果此时,左右边界没有相遇,那就只能证明左边left找到了一个大于基准值tmp的值
{
arr[right] = arr[left];
}
else
{
break;
}
}
arr[left] = tmp;//此时 因为 left == right
return left;//return right ok
}
1.7性能分析
- 时间复杂度:最好,最坏,平均的时间复杂度均为O(nlogn)。
- 空间复杂度:空间复杂度O(n)。
- 稳定性:稳定。
相关推荐:
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
SEO收费如何选择合适的SEO服务,提升网站排名并增加曝光度,做网站优化哪家实惠
seo软件是什么职位,seo用的是什么软件 ,ai感知树
AI网页版智能问答,开启智慧沟通新时代,ai梦境档案用不了手柄
打造内容创作新时代:有言AI生成助力创作者释放灵感
未来写作新模式文章撰写AI如何助力内容创作
ChatGPT宕机恢复时间如何解决用户焦虑与技术背后的故事,ai人工智能写作火山
AI免费写文章:让创作变得轻松高效
丹东seo是什么怎么选,丹东spr ,黑发ai图
SEO优化要钱吗?揭秘SEO投资背后的价值与回报,ai领域
SEO是如何推动企业增长的关键力量,深圳罗湖网站建设设计
seo给你什么帮助,seo的利与弊 ,ai 大厨
什么是seo方法,何为seo ,ai写作神器源码是什么
SEO新手必看:从零开始SEO优化的终极指南,随州网站优化技巧
SEO教育:搜索引擎优化,开启成功职业之路,搜狗SEO排名接单
ChatGPT您的应用遇到问题,无法正常启动?如何解决并重新体验智能助手的魅力!,男头ai关键词
GPT人工智能-让未来触手可及的智慧之光,ai头花写真
怎样利用AI写文章,轻松提升写作效率
“洗稿技巧如何让你的文章脱颖而出,轻松提升内容创作水平!”,台州椒江seo企业排名
seo用什么写属性写,seo属于什么 ,芭田科学施肥AI
ChatGPTWindows版本下载:让AI助力您的工作和生活,ai yamama
SEO项目:如何通过精确优化提升企业网站排名与转化率,武汉做网站优化的公司
SEO用户:如何为您的网站带来持续流量和转化,惠州网站推广哪个好
创作新时代:自动生成文章AI的魅力与未来
智能AI生成文章释放创作新可能
AI免费写文章生成器高效写作新革命
SEO新人必读:从零开始SEO的核心技巧与实践指南,网站邮件推广设计
线上AI写作免费一键生成,轻松提升写作效率,解放创作思维
SEO中权重是什么意思?让你迅速网站排名的核心秘密!,长颈鹿智能AI点读机
2024年AI写文章生成器推荐:让创作轻松高效,提升写作水平
ChatGPT故障你从未听过的真相,究竟是什么让它偶尔“失灵”?,ai 图片 矢量
亚马逊seo信息是什么,亚马逊seo关键词优化软件 ,光谷ai
ChatGPT出现报错503?这些解决办法你必须知道!,粉墨ai说唱
OpenArtAI如何进入:数字艺术的未来之门,分析海报ai
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议
SEO作用:提升网站流量与品牌曝光的秘密武器,美容网站联盟平台推广
SEO检测,让网站排名飞升的秘密武器,高端快消食品营销推广
SEO拓客,让您的业务飞速增长!,密云自适应网站建设
SEO怎么优化比较好?全面提升网站排名的实用技巧,高级ai玩家
AI免费文章生成器:轻松创作高质量内容的终极工具
SEO快排还有效果吗揭秘快速排名的真相与未来趋势,ai人像波普
ChatGPT破解:人工智能未来的无限可能,污污AI解说
SEO优化知识全解析:提升网站排名的秘密武器,ai出错合集
seo网站排名关键词优化,seo网站关键词优化怎么做 ,ai回廊
SEO量:提升网站流量和排名的关键法则,德兴seo
seo需要什么人才,seo需要做什么工作 ,探索ai照片
ChatGPT发生故障,背后隐藏着哪些不为人知的原因与挑战?,硬件ai和软件ai
SEO有点:揭秘优化之道,提升网站排名的秘诀,广州抖音seo厂家地址
2025百度收录优化:提升网站排名,助力企业数字化转型,第一ai做