排序算法:并归排序

  • 思维导图:
  • 归并排序的定义:
  • 俩个有序线性表的合并:
  • 归并排序的代码实现:
  • 归并排序的性能:

思维导图:

归并排序的定义:


俩个有序线性表的合并:

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);}
}

归并排序的性能:

时间复杂度:
空间复杂度:
稳定
适用于顺序存储和链式存储

数据结构之排序算法:并归排序相关推荐

  1. 数据结构之排序算法:内部排序算法的应用与比较

    排序算法:内部排序算法的应用与比较 思维导图: 比较: 应用: 思维导图: 比较: 应用:

  2. 排序算法:桶排序、计数排序、基数排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 这篇博客将主要介绍三种时间复杂度是 ...

  3. 十大排序算法总结 内部排序

    目录 排序测试模板 一.冒泡排序 冒泡排序-总体思想 冒泡排序-编程思想 冒泡排序-复杂度及优缺点 冒泡排序-优化 二.选择排序 选择排序-总体思想 ​选择排序-编程思想 选择排序-复杂度及优缺点 三 ...

  4. 经典排序算法 - 鸽巢排序Pigeonhole sort

    经典排序算法 - 鸽巢排序Pigeonhole sort 原理类似桶排序,同样需要一个很大的鸽巢[桶排序里管这个叫桶,名字无所谓了] 鸽巢其实就是数组啦,数组的索引位置就表示值,该索引位置的值表示出现 ...

  5. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  6. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  7. 排序算法之计数排序、基数排序和桶排序

    转自:http://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html 计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是 ...

  8. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  9. JAVA排序算法之希尔排序

    基本介绍 希尔排序是希尔(Donald Shell)于 1959 年提出的一种排序算法.希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序. 希尔排序法基本思 ...

  10. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

最新文章

  1. LeetCode简单题之两句话中的不常见单词
  2. 用户界面设计准则从何而来
  3. (一).NET SubSonic2.0 的配置
  4. redis的基础命令操作
  5. 学Java可以看哪些书?6本Java书籍推荐
  6. mysql数据备份mysqldump
  7. istio_关于Istio的五件事
  8. 佐治亚理工学院 计算投资公开课第六周作业 投资策略分析平台
  9. 一种用于茶叶病害识别的低阶学习方法
  10. 《研磨设计模式》抽象工厂模式与简单工厂模式的比较(golang)
  11. Spring 常用注解
  12. 机械电钢琴音源 Cinesamples Keyboard In Blue Kontakt
  13. python 使用ThreadPool 创建线程,后台执行并check
  14. 怎么给word文档注音_Word文档中,怎样全篇加注拼音?
  15. ALLEGRO 中导入PADS的asc文件时显示pads_in.log does not exit
  16. Linux基本指令初阶
  17. 留言板(php+数据库)
  18. python情感分析(真实案例完整流程)
  19. 利用百度地图查询全国地铁线路
  20. 【软考系统架构设计师】2009年下系统架构师论文写作历年真题

热门文章

  1. 程序员看不起事业单位员工:一年收入才4万?网友:40岁再比一比,究竟谁更牛逼!!
  2. 学习C++怎么进阶?
  3. python globals() 动态函数调用_[Python] 动态函数调用(通过函数名)
  4. c 语言教程文档,c语言基本教程
  5. java excel 插件开发工具_程序员常用的15 种开发者工具推荐
  6. 如何使用Bioconductor进行单细胞分析?
  7. 七龙珠 |召唤一份单细胞数据库汇总
  8. Mac电脑如何输入command(⌘)、option(⌥)、shift(⇧)等特殊符号
  9. win环境sftp软件_WinSCP中文版
  10. 第44课 角谷猜想 动动脑 第3题 完善程序