数据结构之排序算法:并归排序
排序算法:并归排序
- 思维导图:
- 归并排序的定义:
- 俩个有序线性表的合并:
- 归并排序的代码实现:
- 归并排序的性能:
思维导图:
归并排序的定义:
俩个有序线性表的合并:
int *B = (int *)malloc((n+1) * sizeof(int)); //总长度存储空间,0不使用
// 初始数组、第一个组的初始元素位置、第一个组的最后元素位置、第二个组的最后元素位置
void Merge(int A[],int low,int mid,int high){for(int k = low;k <= high;k ++) B[k] = A[k]; //将A中元素复制到B// i第一个组的初始元素位置、j第二个组的初始元素位置 、k存储结果的位置 for(int i = low,int j = mid+1,int k = i;i<=mid && j<=high;k++){if(B[i] <= B[j])A[k] = B[i++]; //将较小的复制到AelseA[k] = B[j++];}//某一个组排序完成 while(i <= mid)A[k++] = B[i++];while(j <= high)A[k++] = B[j++];
}
归并排序的代码实现:
void MergeSort(int a[],int low,int high){if(low < high){int mid = (low+high) / 2; //从中间划分MergeSort(a,low,mid); //对左半部分归并排序MergeSort(a,mid+1,high); //对右半部分归并排序Merge(a,low,mid,high);}
}
归并排序的性能:
时间复杂度:
空间复杂度:
稳定
适用于顺序存储和链式存储
数据结构之排序算法:并归排序相关推荐
- 数据结构之排序算法:内部排序算法的应用与比较
排序算法:内部排序算法的应用与比较 思维导图: 比较: 应用: 思维导图: 比较: 应用:
- 排序算法:桶排序、计数排序、基数排序
相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 这篇博客将主要介绍三种时间复杂度是 ...
- 十大排序算法总结 内部排序
目录 排序测试模板 一.冒泡排序 冒泡排序-总体思想 冒泡排序-编程思想 冒泡排序-复杂度及优缺点 冒泡排序-优化 二.选择排序 选择排序-总体思想 选择排序-编程思想 选择排序-复杂度及优缺点 三 ...
- 经典排序算法 - 鸽巢排序Pigeonhole sort
经典排序算法 - 鸽巢排序Pigeonhole sort 原理类似桶排序,同样需要一个很大的鸽巢[桶排序里管这个叫桶,名字无所谓了] 鸽巢其实就是数组啦,数组的索引位置就表示值,该索引位置的值表示出现 ...
- 排序---初级排序算法(选择排序、插入排序和希尔排序)
写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera Algorithms Part1&2 本文 ...
- 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试
案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...
- 排序算法之计数排序、基数排序和桶排序
转自:http://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html 计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是 ...
- 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析
排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...
- JAVA排序算法之希尔排序
基本介绍 希尔排序是希尔(Donald Shell)于 1959 年提出的一种排序算法.希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序. 希尔排序法基本思 ...
- 堆排序算法c语言筛选法,【排序】排序算法之选择排序
排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...
最新文章
- LeetCode简单题之两句话中的不常见单词
- 用户界面设计准则从何而来
- (一).NET SubSonic2.0 的配置
- redis的基础命令操作
- 学Java可以看哪些书?6本Java书籍推荐
- mysql数据备份mysqldump
- istio_关于Istio的五件事
- 佐治亚理工学院 计算投资公开课第六周作业 投资策略分析平台
- 一种用于茶叶病害识别的低阶学习方法
- 《研磨设计模式》抽象工厂模式与简单工厂模式的比较(golang)
- Spring 常用注解
- 机械电钢琴音源 Cinesamples Keyboard In Blue Kontakt
- python 使用ThreadPool 创建线程,后台执行并check
- 怎么给word文档注音_Word文档中,怎样全篇加注拼音?
- ALLEGRO 中导入PADS的asc文件时显示pads_in.log does not exit
- Linux基本指令初阶
- 留言板(php+数据库)
- python情感分析(真实案例完整流程)
- 利用百度地图查询全国地铁线路
- 【软考系统架构设计师】2009年下系统架构师论文写作历年真题
热门文章
- 程序员看不起事业单位员工:一年收入才4万?网友:40岁再比一比,究竟谁更牛逼!!
- 学习C++怎么进阶?
- python globals() 动态函数调用_[Python] 动态函数调用(通过函数名)
- c 语言教程文档,c语言基本教程
- java excel 插件开发工具_程序员常用的15 种开发者工具推荐
- 如何使用Bioconductor进行单细胞分析?
- 七龙珠 |召唤一份单细胞数据库汇总
- Mac电脑如何输入command(⌘)、option(⌥)、shift(⇧)等特殊符号
- win环境sftp软件_WinSCP中文版
- 第44课 角谷猜想 动动脑 第3题 完善程序