关于归并排序元素之间比较次数的计算

问题:3,1,4,1,5,9,6,5  通过归并排序对它进行从大到小的排序  要进行多少次数组元素之间的比较?
网站找的解决方法:
第一趟合并(3,1),(4,1),(5,9),(5,6) ,元素之间共比较了4次;
第二趟合并(4,3,1,1),(9,6,5,5),元素之间共比较了6次;
为什么是6次?(3,1)和(4,1)是怎么比较得到(4,3,1,1)的呢?难道是插入排序?不是的。
首先我把Left=(3,1),Right=(4,1),tmp数组用于排序好的结果,目前为空,也就是()。
用Left[0],,也就是3,和Right[0],也就是4比较(1次),看哪个大,后加入到tmp,同时从大的数组中删除该元素,
这样第一次比较下来,Left=(3,1),Right=(1),tmp=(4);
然后同理了,仍然用Left[0]和Right[0]比较,即3>1,将3加入tmp,同时从Left中删除3,
这样第二次比较下来,Left=(1),Right=(1),tmp=(4,3);
继续剩下的元素,Left[0]=1和Right[0]=1比较(第三次),得到1=1,取1加入tmp,剩下的1自然就不用比较了,直接加入tmp,
于是tmp=(4,3,1,1),Left=(),Right=(),共进行3次比较。其它同理!

关于归并排序元素之间比较次数的计算,布布扣,bubuko.com

时间: 2024-12-25 18:45:59

关于归并排序元素之间比较次数的计算的相关文章

关于插入排序元素之间比较次数的计算

问题:3,1,4,1,5,9,6,5  通过归并排序对它进行从小到大的排序  要进行多少次数组元素之间的比较? [3] 1 4 1 5 9 6 5 第一次排序结果:[1 3] 4 1 5 9 6 5; //新加入的3和1比较,比较次数1次 第二次排序结果:[1 3 4] 1 5 9 6 5; //新加入的4和3比较,比较次数1次 第三次排序结果:[1 1 3 4]  5 9 6 5; //新加入的1分别和4 3 1 比较,比较次数3次 第四次排序结果:[1 1 3 4 5] 9 6 5; //新

reduce实现计算数组中每个元素出现的次数 数组去重 将多维数组转化为一维

// js计算数组中每个元素出现的次数 // var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; // var countedNames = names.reduce(function (allNames, name) { // if (name in allNames) { // allNames[name]++; // } // else { // allNames[name] = 1; // } // return allName

清除行内元素之间HTML空白的几种解决方案

行内块(inline-block)是非常有用的,特别是想要不用'block'和'float'来控制这些行内元素的margin,padding之时. 问题来了,HTML源码中行内元素之间的空白有时候显示在屏幕上那是相当的讨厌. 当然,有一些技巧(方法)可以用来清除他们:比如粗暴地完全删除空白,或者其他的方法: 解决方案1: font-size:0; 最好的方法是在外层元素上设置font-size:0;同时在内层元素上指定字体具体的大小. 复制代码 代码如下: ul.inline-block-lis

html iframe 元素之间的调用

html iframe 元素之间的调用一.简介 一般需要引入一个独立页面的时候,我们会使用iframe.在业务需要的时候,我们需要在父页面与iframe页面之间进行交互.交互的时候,我们就需要使 用到js或jquery对父页面或子页面中的相关元素进操作.二.示例 1.页面结构如下: 父页面: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content

去除行内(inline/inline-block)元素之间的间距

先展示一下,行内元素之间存在间距,实例代码如下: <style> div { color: #fff; padding: 25px 50px; } .inline-f00 { display: inline; background: #f00; } .inline-0f0 { display: inline; background: #0f0; } .inline-block-00f { display: inline-block; background: #00f; } .inline-bl

统计数组[1-n]中各个元素出现的次数,时间复杂度O(n),空间复杂度O(1),可改变数组结构

* 统计数组中每个元素出现的次数 * 数组长度为N,每个元素范围为[1,N]. * 统计各个元素出现的次数,要求时间复杂度为O(N),空间复杂度为O(1).可以修改数组中元素的值. * * 思路:遍历到每一个元素,将该(元素值 - 1)作为下标值,将该下标的元素赋值(若为正,赋值-1:若为负值,-1) * 最后,每个下标中存储的元素即为统计次数,而下标+1即为元素值. 代码: public static void main(String[] args) { // TODO Auto-genera

取序列对象中元素出现的次数

取一个序列中元素出现的格式 方法一: from collections import Iterable def action(iterable): reslut = {} if not isinstance(iterable,Iterable): #判断对象是否是可迭代 raise TypeError('is not iterable') #如果不是手动触发异常 for item in iterable: #对对象进行迭代 if item in reslut.keys(): #把元素和元素出现的

行内元素之间的有个小空隙的问题

一.简述 编写HTML页面时,有时候在某一种情况下中用到了行内元素后面要紧跟着一个行内元素,比如:<span></span><a></a>  那么就会出现span元素与a元素之间有一个小空隙. 二.内容 首先是span元素与a元素之间出现了小空隙的情况. <span>span</span> <a href='javascript:void(0)'>第一个a标签</a> </div> 然后是消除小空隙

1定位与 2一些小标签的使用 3版心作用 4元素之间的转换 5项目准备

1定位的使用: 1固定定位(position:fixed) 2绝对定位(position:absolute) 3相对定位(position:resitive) 4静态定位(position:static)默认 脱标 脱标 不脱标 不脱标 模式转换(inline-block) 模式转换(inline-block) 模式不转换(占据原来在标准流里的位置) 模式不转换 相对浏览器定位 父盒子无定位(static):相对浏览器 父盒子有定位(除是static): 相对父盒子 相对原来位子定位 没有作用