递归

递归条件

  • 自己调用自己
  • 有结束条件

二分查找

二分查找对1~100乱序数字查找

l = list(range(1,101))
def bin_search(data_set,val):low = 0high = len(data_set) - 1while low <= high:mid = (low+high)//2if data_set[mid] == val:return midelif data_set[mid] < val:low = mid + 1else:high = mid - 1return
n = bin_search(l,11)
print(n)            # 返回结果是: 10

时间复杂度、空间复杂度和稳定性

一个算法是由控制结构(顺序、分支和循环3种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。为了便于比较同一个问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本操作的原操作,以该基本操作的重复执行的次数作为算法的时间量度。

时间复杂度的概念

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度


常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)

各种算法比较

空间复杂度概念

空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面

算法不稳定定义

在排序之前,有两个数相等,但是在排序结束之后,它们两个有可能改变顺序.

说明:

在一个待排序队列中,A和B相等,且A排在B的前面,而排序之后,A排在了B的后面.这个时候,我们说这种算法是不稳定的.

不稳定的几种算法

  • 快排为什么不稳定
 3 2 2 4 经过第一次快排后结果:2 2 3 4 (第3号位置的2第一次排序后跑到第1号位置了)
  • 堆排序为什么不稳定

如果堆顶3先输出,则,第三层的27(最后一个27)跑到堆顶,然后堆稳定,继续输出堆顶,是刚才那个27这样说明后面的27先于第二个位置的27输出,不稳定
  • 选择排序为什么不稳定
5 8 5 2 9 第一次假定1号位置的5最小,但是实际最小的是4号位置的2第一次排序后为:2 8 5 5 9 以前1号位置的5跑到3号位置5的后面了

空间,时间复杂度参考这个       
详细链接参考这个链接

递归二分查找时间复杂度、空间复杂度和稳定性相关推荐

  1. 常用十大算法 非递归二分查找、分治法、动态规划、贪心算法、回溯算法(骑士周游为例)、KMP、最小生成树算法:Prim、Kruskal、最短路径算法:Dijkstra、Floyd。

    十大算法 学完数据结构该学什么?当然是来巩固算法,下面介绍了十中比较常用的算法,希望能帮到大家. 包括:非递归二分查找.分治法.动态规划.贪心算法.回溯算法(骑士周游为例).KMP.最小生成树算法:P ...

  2. 冒泡排序,递归二分查找法,二分法

    #冒泡排序list1=[2,4,5,6,7,8,9,11,30,35,38,41,42] def bubble_sort(list):for i in range(len(list)-1):for j ...

  3. 二分查找时间复杂度的计算

    二分查找(Binary Search) 1.使用条件: ①线性表采用顺序存储结构. ②表中元素按关键字有序排列. 2.时间复杂度:O(log2n) 3.推算过程: 假设序列里共有n个元素, 第一次,在 ...

  4. 快速排序和二分查找时间复杂度详解

    因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:一次二分剩下:n/2两次二分剩下:n/2/2 = n/4...m次二分剩下:n/(2^m)在最坏情况下是在排除到只剩下最后一个值之后得到结 ...

  5. python二分查找时间复杂度_时间复杂度 二分查找

    时间复杂度 时间复杂度是用来估计算法运行时间的一个式子(单位). 一般来说,时间复杂度高的算法比复杂度低的算法慢. 常见的时间复杂度(按效率排序) O(1) < O(log n) < O( ...

  6. 二分查找时间复杂度分析

    主要还是从算法所占用的「时间」和「空间」两个维度去考量. 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述. 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂 ...

  7. 二分查找时间复杂度及其Python实现

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

  8. 算法前戏 递归 二分查找 列表查找

    一.递归 概念: 函数直接或者间接的调用自身算法的过程,则该函数称为递归函数.在计算机编写程序中,递归算法对解决一大类问题是十分有效的. 特点: ①递归就是在过程或者函数里调用自身. ②在使用递归策略 ...

  9. 顺序查找与二分查找时间复杂度的比较

    注意要点:通过System.currentTimeMills();来获取当前时间,来计算该算法运行运算时间 ​​​​​​​顺序查找的时间复杂度为O(n) 二分查找的时间复杂度为O(log(n)) 但两 ...

最新文章

  1. XAMPP 配置虚拟域名/localhost重定向
  2. 开发板与pc之间文件传输:kermit and lrzsz
  3. 高级计算机网络知识点复习
  4. VC char和TCHAR之间转换
  5. Linux的基本原则
  6. 迭代器 生成器 装饰器 匿名函数
  7. 30行代码如何写一封七夕密书?
  8. 【Ubuntu-Tensorflow】TF1.0到TF1.2出现“Key LSTM/basic_lstm_cell/bias not found in checkpoin”问题
  9. 思考:那么些大学生仅凭个人好恶来判断,缺乏是非观
  10. fusion安装centos7并配置静态ip
  11. 教大家一个简单的办法
  12. ABP后台服务之作业调度Quartz.NET
  13. mac上如何安装oracle,在mac上安装oracle instant client 和 sqlplus
  14. 如何衡量多元线性回归模型优劣
  15. 普通二本,去了小公司,我也想改变
  16. String 类 的 使用
  17. WiFi 空口抓包工具 --- OmniPeek
  18. linux下搭建radius服务器,CentOS下Radius服务器搭建
  19. android sd卡数据恢复软件下载,内存卡数据恢复
  20. 计算机专业该如何找实习工作?迷茫、不知所措的你值得一看~

热门文章

  1. Python之woe:woe库的简介、安装、使用方法之详细攻略
  2. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测
  3. DL之VGG16:基于VGG16(Keras)利用Knifey-Spoony数据集对网络架构FineTuning
  4. MAT之GUI:GUI的方式创建/训练/仿真/预测神经网络
  5. DL框架之Caffe:深度学习框架之Caffe的简介、安装、使用方法详细攻略
  6. Flask 系列之 部署发布
  7. eclipse创建spring boot项目加载不到application.properties配置文件
  8. memset 还可以这样用
  9. sqlserver 日常检查脚本
  10. 解压RK3288的boot.img修改init.rc 添加开机自启动脚本