8.8 数据结构与算法-----查找算法
2017-08-12 14:36
218 查看
5、归并排序
归并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个有序的子序列组成,每个子序列的长度为1,然后再两两合并,得到了一个
N/2 个长度为2或1的有序子序列,再两两合并,如此重复,值得得到一个长度为N的有序数据序列为止,这种排序方法称为2—路合并排序。
例如数组A有7个数据,分别是: 49 38 65 97 76 13 27,那么采用归并排序算法的操作过程如图7所示:
初始值 [49] [38] [65] [97] [76] [13] [27]
看成由长度为1的7个子序列组成
第一次合并之后 [38 49] [65 97] [13 76] [27]
看成由长度为1或2的4个子序列组成
第二次合并之后 [38 49 65 97] [13 27 76]
看成由长度为4或3的2个子序列组成
第三次合并之后 [13 27 38 49 65 76 97]
合并算法的核心操作就是将一维数组中前后相邻的两个两个有序序列合并成一个有序序列。合并算法也可以采用递归算法来实现,形式上较为简单,但实用性很差。合并算法的合并次数是一个非常重要的量,根据计算当数组中有3到4个元素时,合并次数是2次,当有5到8个元素时,合并次数是3次,当有9到16个元素时,合并次数是4次,按照这一规律,当有N个子序列时可以推断出合并的次数是X(2 >=N,符合此条件的最小那个X)。
其时间复杂度为:O(nlogn).所需辅助存储空间为:O(n)
查找算法
一、顺序查找
二、折半查找
要求所有数字是排序好的,每次可以匹配排除一半的数字。
归并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个有序的子序列组成,每个子序列的长度为1,然后再两两合并,得到了一个
N/2 个长度为2或1的有序子序列,再两两合并,如此重复,值得得到一个长度为N的有序数据序列为止,这种排序方法称为2—路合并排序。
例如数组A有7个数据,分别是: 49 38 65 97 76 13 27,那么采用归并排序算法的操作过程如图7所示:
初始值 [49] [38] [65] [97] [76] [13] [27]
看成由长度为1的7个子序列组成
第一次合并之后 [38 49] [65 97] [13 76] [27]
看成由长度为1或2的4个子序列组成
第二次合并之后 [38 49 65 97] [13 27 76]
看成由长度为4或3的2个子序列组成
第三次合并之后 [13 27 38 49 65 76 97]
合并算法的核心操作就是将一维数组中前后相邻的两个两个有序序列合并成一个有序序列。合并算法也可以采用递归算法来实现,形式上较为简单,但实用性很差。合并算法的合并次数是一个非常重要的量,根据计算当数组中有3到4个元素时,合并次数是2次,当有5到8个元素时,合并次数是3次,当有9到16个元素时,合并次数是4次,按照这一规律,当有N个子序列时可以推断出合并的次数是X(2 >=N,符合此条件的最小那个X)。
其时间复杂度为:O(nlogn).所需辅助存储空间为:O(n)
查找算法
一、顺序查找
二、折半查找
要求所有数字是排序好的,每次可以匹配排除一半的数字。
相关文章推荐
- python学习笔记(十一)——算法与数据结构基础(算法概述+查找算法)
- 【数据结构与算法之查找算法二】二分查找
- [翻译]C#数据结构与算法 – 第4章 基本查找算法
- 【数据结构与算法之查找算法一】顺序查找
- [翻译]C#数据结构与算法 – 第四章 基本查找算法
- 数据结构与算法笔记 —— 查找算法及代码实现
- 【数据结构与算法】数组应用4:多项式计算Java版
- 【数据结构与算法】模式匹配——从BF算法到KMP算法(附完整源码)
- 数据结构中随机数的算法
- 【数据结构与算法002】基本数据结构——栈
- 数据结构与算法_1:线性表顺序存储结构常见操作
- 数据结构算法上课讨论
- 【数据结构&算法】数据结构之单向链表(练习)
- 输入法核心数据结构及算法的设计
- 数据结构——算法之(023)( 单链表就地逆置,头插法)
- JavaScript数据结构与算法之栈与队列
- 数据结构实验报告-图算法-最小生成树-最短路-拓扑排序-搜索
- Javascript数据结构与算法--队列(顺序队列、优先队列、循环队列)的实现与用法
- 微软的22道数据结构算法面试题
- 工程实践中最常用的10大数据结构与算法