二分法的时间复杂度(时间复杂度和排序方法)

2026-04-26 06:15:01 :0

二分法的时间复杂度(时间复杂度和排序方法)

本篇文章给大家谈谈二分法的时间复杂度,以及时间复杂度和排序方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

时间复杂度和排序方法

一个算法流程中 , 常熟操作数量的指标, 这个指标叫做 O, 如果常熟的操作数量表达式中只要高阶项,不要低阶项, 也不要高阶项的系数,剩下的部分记为(fn), 那么时间复杂度就是O(fn)

一种最简单的方法是循环:

另一种方法是采用的二分法:
注意因为这是一个有序的数组, 所以我们可以先分一半, 然后比较我们要寻找的数字是是在左边的数组还是右边的数组,如果在左边将左边的数组一分为二, 然后继续划分。

第一种方法的时间复杂度是O(n), 第二种方法的时间复杂度是 O(logN)可以看出对于一个有序数组数量比较多的时候,二分法确实比较优秀一点。

第一种方法是直接两个数组分别循环找到其中的相同部分。 时间复杂度是 O(n*m)

第二种方法是:
对arr1数组进行循环, 然后在arr2中用二分去查找, 时间复杂度是O(n*logm)

第三种方法是 , 如果左边数组比右边的数组小的话 就将左边的数组进行移动 , 如果左边比右边大的话 , 就将右边的数组进行移动 , 如果两个相等的话就共同移动。其中的时间复杂度是O(n+m); 加上continue之后速度快了很多。

介绍完时间复杂度之后我们来看看几种排序方法。

所谓的冒泡排序就是先将最后一位固定最大的或者是最小的,然后取固定到倒数第二位中去固定, 我们如果对他进行使用冒泡从小到大开始排序的话应该怎么做呢?
首先排从第一个数字开始排序, 如果当前数字比下一个数字小或者相等的话,那么指针后移,在继续比较下一位,如果是当前数字大于下一位的话就会发生交换,然后指针向后移动。直到最大数字成为最后一位。
整个的时间复杂度是n-1+ n-2+...1

下面介绍一下对数器,所谓的对数器就用你所知道的简单的算法去验证下当前缩写算法的正确性。
我们平时写的算法可以用对数器来验证下

插入算法的精髓是,外部循环保证从1 的时候, 左边的数组是有序的, 如果是左边的数组没有顺序的,就内部循环发生交换, 比如说我们现在有一个数组是let arr = ,我们要保证他从小到大进行排序
外部循环从1开始, 左边的数组是 , 然后还是内部循环进行调序, 以此类推,最后的时间复杂度是2+3+4+...n-1

二分法的时间复杂度为O(log2n)是什么意思

二分法的基本思想如下:
假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。
由于是数组是预先排序好的,所以可以采用折半查询的方式,每次抛掉待查询部分的一半
这样,长度为N的数组,只需要log2N次查询即可,2是对数的底。
例如,长度为7的数组,最多只需要3次就可以找到
O(log2n)只是表示是log2N同一数量级,因为有个取整的问题,而且也有可能在查询过程中就已经找到(也就是某个折半查询点正好是待查询数据),这样O(log2n)就是一个上限

给定a,用二分法设计出求a^n的算法该算法的时间复杂度是每次分解的子问题是几个,子问题的规模是

int pow(int a, int n)
{
if (a == 0 || a == 1 || n == 1)
return a;
//n为了规整奇数时的余数
return a * pow(a, n / 2) * pow(a, (n - 1)/ 2);
}
时间复杂度为O(n)。每次将问题分解为2个,子问题的规模为n/2

二分法思路总结

二分的思想的挺简单的,一开始觉得要考虑很多边界情况。但其实不然,考虑这些边界情况并不会改善算法的时间复杂度。

深刻体会,对于计算机来说,少计算一次两次有什么区别呢。真正影响到执行时间的是内部if,else语句的出口。以及时间复杂度,是一种数量级的增长,而不是一次两次。
如果一定要用if else,那么看是否能用?:表达式代替。

首先二分法的思想
它是一种分治的思想。适用于相对有序的数组。初始化指针在数组的开头和结尾,然后得到中间数,进行比较,移动头尾指针,进行一半的取舍。

普通版的二分查找
给出 arr= ,找到数组中是否存在7,找到则并返回下标,找不到则返回-1

进阶版二分查找
例题:给出非递减排序数组的部分翻转数组,找出其最小元素

为什么使用二分
给出的条件是一个相对有序的数组并且因为当数据量大的时候,遍历整个数组,极不友好。也不够高级。

当找到的mid》left,则最小数一定在mid的右侧,当mid《left,最小数一定在mid的左侧(或者是mid)。最后我们会遍历到一个单调增的区域,这个时候直接拿left的值即可,不需要在进行二分了。

事件复杂度:O(lgn)
空间复杂度:O(1)

这个算法很巧妙的避开了类似这种找到mid(1)和left(1)相同的局面。算法中直接left++,再进行一次计算。

算法好难啊啊
继续加油吧!

二分查找的平均查找长度是多少

以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为4。

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

二分查找的时间复杂度是O(2为底的log(n)),也就是说它的平均查找长度只和该有序表的长度有关,当长度为10时,平均查找长度为log10(2为底),其》3,《4,所以平均查找长度为4次。

扩展资料:

二分查找的查找过程:

首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

关于二分法的时间复杂度和时间复杂度和排序方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

二分法的时间复杂度(时间复杂度和排序方法)

本文编辑:admin

更多文章:


学后端开发的十大忠告(初学Java并且有志于后端开发的同学需要关注什么)

学后端开发的十大忠告(初学Java并且有志于后端开发的同学需要关注什么)

今天给各位分享初学Java并且有志于后端开发的同学需要关注什么的知识,其中也会对初学Java并且有志于后端开发的同学需要关注什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录初学Java并且有志于后端开发的同

2025年11月28日 05:45

应届毕业生简历模板word版本免费(简历模板word个人简历范本五篇)

应届毕业生简历模板word版本免费(简历模板word个人简历范本五篇)

各位老铁们,大家好,今天由我来为大家分享应届毕业生简历模板word版本免费,以及简历模板word个人简历范本五篇的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始

2025年9月17日 08:00

isspace(C语言里有inword这个函数吗)

isspace(C语言里有inword这个函数吗)

各位老铁们好,相信很多人对isspace都不是特别的了解,因此呢,今天就来为大家分享下关于isspace以及C语言里有inword这个函数吗的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录C语言里有inword这

2025年5月30日 17:45

log4j2(log4j2 配置简要分析)

log4j2(log4j2 配置简要分析)

各位老铁们,大家好,今天由我来为大家分享log4j2,以及log4j2 配置简要分析的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录log4j2 配

2026年5月24日 03:45

background 属性(CSS--background系列属性)

background 属性(CSS--background系列属性)

大家好,如果您还对background 属性不太了解,没有关系,今天就由本站为大家分享background 属性的知识,包括CSS--background系列属性的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录CS

2026年2月27日 22:30

this is me对不对(她是我,用英语She is me!对吗)

this is me对不对(她是我,用英语She is me!对吗)

各位老铁们,大家好,今天由我来为大家分享this is me对不对,以及她是我,用英语She is me!对吗的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2025年6月6日 18:15

葡萄牙澳大利亚(澳大利亚养老金和葡萄牙养老金哪个高)

葡萄牙澳大利亚(澳大利亚养老金和葡萄牙养老金哪个高)

今天给各位分享澳大利亚养老金和葡萄牙养老金哪个高的知识,其中也会对澳大利亚养老金和葡萄牙养老金哪个高进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录澳大利亚养老金和葡萄牙养老金哪个高澳洲对葡萄牙免签吗“澳大利亚

2026年5月3日 04:45

音乐格式在线转换(怎么把m4a格式音乐转换成mp3)

音乐格式在线转换(怎么把m4a格式音乐转换成mp3)

这篇文章给大家聊聊关于音乐格式在线转换,以及怎么把m4a格式音乐转换成mp3对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录怎么把m4a格式音乐转换成mp3QQ音乐转换格式怎么转换怎么把QQ音乐换成WAV格式MP3格式的音频文

2025年6月8日 12:30

百度代码是什么(百度的股票代码是)

百度代码是什么(百度的股票代码是)

大家好,百度代码是什么相信很多的网友都不是很明白,包括百度的股票代码是也是一样,不过没有关系,接下来就来为大家分享关于百度代码是什么和百度的股票代码是的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录百度的股票代码

2026年1月11日 05:15

entware常用插件(为什么安装了Entware不能用)

entware常用插件(为什么安装了Entware不能用)

大家好,今天小编来为大家解答以下的问题,关于entware常用插件,为什么安装了Entware不能用这个很多人还不知道,现在让我们一起来看看吧!本文目录为什么安装了Entware不能用梅林系统软件中心没有插件为什么安装了Entware不能用

2025年11月17日 15:00

chloe英文(Chloe 英文怎么读)

chloe英文(Chloe 英文怎么读)

这篇文章给大家聊聊关于chloe英文,以及Chloe 英文怎么读对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录Chloe 英文怎么读chloe英文名怎么读“Chloe” 怎么读Chloe 英文怎么读chloe 是法语词,读

2026年7月12日 19:45

queue up怎么读音发音英语(queue up是什么意思及用法)

queue up怎么读音发音英语(queue up是什么意思及用法)

“queue up怎么读音发音英语”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看queue up怎么读音发音英语(queue up是什么意思及用法)!本文目录queue up是什么意思及用法queueup怎么读queue

2026年2月2日 03:00

css留言框右边滚动滑条(CSS样式如何设置滚动条的内边距)

css留言框右边滚动滑条(CSS样式如何设置滚动条的内边距)

本篇文章给大家谈谈css留言框右边滚动滑条,以及CSS样式如何设置滚动条的内边距对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录CSS样式如

2026年7月10日 12:45

java代码(怎么写Java的代码)

java代码(怎么写Java的代码)

其实java代码的问题并不复杂,但是又很多的朋友都不太了解怎么写Java的代码,因此呢,今天小编就来为大家分享java代码的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录怎么写Java的代码用JDK如何在DOS下

2025年10月1日 02:15

alert属于js吗(关闭js的alert对话框后执行的是什么操作页面有没有被刷新)

alert属于js吗(关闭js的alert对话框后执行的是什么操作页面有没有被刷新)

大家好,如果您还对alert属于js吗不太了解,没有关系,今天就由本站为大家分享alert属于js吗的知识,包括关闭js的alert对话框后执行的是什么操作页面有没有被刷新的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本

2026年3月28日 10:30

dictate例句(支配的造句支配的造句是什么)

dictate例句(支配的造句支配的造句是什么)

大家好,如果您还对dictate例句不太了解,没有关系,今天就由本站为大家分享dictate例句的知识,包括支配的造句支配的造句是什么的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录支配的造句支配的造句是什么dic

2026年7月1日 05:30

lazyload(nuxt 使用vue-lazyload)

lazyload(nuxt 使用vue-lazyload)

大家好,关于lazyload很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于nuxt 使用vue-lazyload的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助

2025年9月13日 23:15

二郎神和沉香什么关系(二郎神和沉香是什么关系)

二郎神和沉香什么关系(二郎神和沉香是什么关系)

其实二郎神和沉香什么关系的问题并不复杂,但是又很多的朋友都不太了解二郎神和沉香是什么关系,因此呢,今天小编就来为大家分享二郎神和沉香什么关系的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录二郎神和沉香是什么关系沉

2025年10月8日 08:15

db数据库是什么(DB、DBS、DBMS之间有什么关系)

db数据库是什么(DB、DBS、DBMS之间有什么关系)

大家好,db数据库是什么相信很多的网友都不是很明白,包括DB、DBS、DBMS之间有什么关系也是一样,不过没有关系,接下来就来为大家分享关于db数据库是什么和DB、DBS、DBMS之间有什么关系的一些知识点,大家可以关注收藏,免得下次来找不

2025年7月22日 16:45

marginnote3免费版(marginnote3试用到期后还能看文档吗)

marginnote3免费版(marginnote3试用到期后还能看文档吗)

各位老铁们好,相信很多人对marginnote3免费版都不是特别的了解,因此呢,今天就来为大家分享下关于marginnote3免费版以及marginnote3试用到期后还能看文档吗的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来

2025年11月2日 05:30

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索