归并排序中,归并的趟数是多少.求计算方法.log(n)

wwwzy0102022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
起点____ 共回答了19个问题 | 采纳率100%
思路就是:构造归并树,对n个数构造它的归并树,而归并树的高度再减去1就是归并排序的趟数,也就等于log (n),举个简单而直观的例子,设对1~8这8个数进行归并排序,从上到下构造它的归并树如下
1 2 3 4 5 6 7 8
/ / / /
1 2 3 4 5 6 7 8
/ /
1 2 3 4 5 6 7 8
/
1 2 3 4 5 6 7 8
每上下相邻的两层之间,从上层到下层的过程就是一趟归并,这棵二叉树的总高度等于4,因此归并趟数为3,正好等于log(8).
1年前

相关推荐

排序求教一、实验目的1.掌握简单插入排序、冒泡排序、快速排序、堆排序以及归并排序的算法并加以应用。2.对各种查找、排序技
排序求教
一、实验目的
1.掌握简单插入排序、冒泡排序、快速排序、堆排序以及归并排序的算法并加以应用。
2.对各种查找、排序技术的时间、空间复杂性有进一步认识。
二、实验内容
编写程序实现下述六种算法中至少三种,并用以下无序序列加以验证:
49,38,65,97,76,13,27,49,72,33
1.直接插入排序
2.冒泡排序
3.快速排序
4.归并排序
5.堆排序
6. 直接选择排序

三、实验步骤


四、实验体会
nhsxd1年前1
无语的小巫婆 共回答了18个问题 | 采纳率100%
什么语言的
下列排序算法中不稳定的是( ).A.快速排序 B.归并排序 C.冒泡排序 D.直接插入排序
lwysssss1年前1
贾笠 共回答了17个问题 | 采纳率94.1%
选A了
C语言中归并排序,能排列奇数个数的数列吗?
C语言中归并排序,能排列奇数个数的数列吗?
书上貌似讲奇数个数的数列也能排序,我不理解的是奇数个数分成两个n/2长度的数列后不是又多出一个数了吗?
糜谷1年前1
木村cn 共回答了19个问题 | 采纳率94.7%
可以的,比如你要排三个元素,3,2,1 .然后它就会被分为【3】.【2,1】然后后者还会进行递归调用.进而分成【3】【2】【1】,进行第一次合并后变为【3】【1,2】,第二次合并后变为【1,2,3,】..就OK了
利用随机函数产生30000个随机整数,利用插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序等排序方法进
利用随机函数产生30000个随机整数,利用插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间.
qinyuliang1年前1
报告长qq 共回答了14个问题 | 采纳率71.4%
int a[] = {2,5,22,666,33,234,6,7,88,55};
int c;
// for (int i=0;i
数据结构试题4、已知待排序列以下,利用二路归并排序进行按小到大排序,除了最终结果外,要求写出每一趟排序的结果.初始序列为
数据结构试题
4、已知待排序列以下,利用二路归并排序进行按小到大排序,除了最终结果外,要求写出每一趟排序的结果.
初始序列为:[8] [4] [5] [6] [2] [1] [7] [3]
二笨牛牛1年前1
zwb1688 共回答了15个问题 | 采纳率100%
1、 4 8 5 6 1 2 3 7
2、 4 5 6 8 1 2 3 7
3、 1 2 3 4 5 6 7 8
归并排序怎么分组?如果一个2^n个元素 比如8个,那么{[(AB)(CD)][(EF)(GH)]}一共三趟归并,是清楚的
归并排序怎么分组?
如果一个2^n个元素 比如8个,那么{[(AB)(CD)][(EF)(GH)]}一共三趟归并,是清楚的,那如果是9个元素呢,是先分成4个和5个,再分成2个 2个 2个 3个么,具体说,严版习题集p61第2题的过程是怎么来的?
光魅1年前1
yizhiyong 共回答了30个问题 | 采纳率90%
你的理解有错误吧,归并排序是说先每次都两组两组的合并,例如1,2,3,4,5,6,7,8,9,那么应该是(1,2),(3,4),(5,6),(7,8),(9),然后才是(1,2,3,4),(5,6,7,8),(9),再是(1,2,3,4,5,6,7,8),(9),最后是1,2,3,4,5,6,7,8,9 查看原帖
对下面的关键字集{35,15,21,99,25,26,36,37,01,18}写出二路归并排序的每趟结果和最终结果.
可以不填吗啊1年前1
egook 共回答了23个问题 | 采纳率82.6%
{35 15 21 99 25 26 36 37 01 18}
{35 15 21 99 25} {26 36 37 01 18}
{35 15 21} {99 25} {26 36 37} {01 18}
{35 15} {21} {99} {25} {26 36} {37} {01} {18}
{35} {15} {21} {99} {25} {26} {36} {37} {01} {18}
{15 35} {21} {99} {25} {26 36} {37} {01} {18}
{15 21 35} {25 99} {26 36 37} {01 18}
{15 21 25 35 99} {01 18 26 36 37}
{01 15 18 21 25 26 35 36 37 99}
若表R在排序前已按元素键值的递增次序排列,则采用什么方法比较次数要少?A、直接插入排序 B、快速排序 C、归并排序 D、
若表R在排序前已按元素键值的递增次序排列,则采用什么方法比较次数要少?A、直接插入排序 B、快速排序 C、归并排序 D、选择排序给出答案并解释
jijuejia1年前1
cmjq 共回答了19个问题 | 采纳率89.5%
选A
直接插入排序.如果已经有序的话,比较次数为n-1.复杂度为O(n)
快速排序在元素有序的情况下比元素无序的情况的时间复杂度要大.有序的时候的复杂度为O(n的平方)
选择排序的时间复杂度固定为O(n的平方)
所以是A.
归并排序怎么分组?如果一个2^n个元素 比如8个,那么{[(AB)(CD)][(EF)(GH)]}一共三趟归并,是清楚的
归并排序怎么分组?
如果一个2^n个元素 比如8个,那么{[(AB)(CD)][(EF)(GH)]}一共三趟归并,是清楚的,那如果是9个元素呢,是先分成4个和5个,再分成2个 2个 2个 3个么,具体说,严版习题集p61第2题的过程是怎么来的?
nn草田1年前1
若婷在等你 共回答了15个问题 | 采纳率100%
你的理解有错误吧,归并排序是说先每次都两组两组的合并,例如1,2,3,4,5,6,7,8,9,那么应该是(1,2),(3,4),(5,6),(7,8),(9),然后才是(1,2,3,4),(5,6,7,8),(9),再是(1,2,3,4,5,6,7,8),(9),最后是1,2,3,4,5,6,7,8,9 查看原帖