该系列博客的内容均为阅读《Grokking Algorithms》(Aditya Bhargava)的心得or笔记or总结

那么我们就直接进入正题吧

简单查找

这个算法应该是最普通的算法or最直接的算法了

工作原理:

在一数组里面找一个数

按顺序一个一个查找

如果匹配,则返回索引

如果在过完一遍数组都没有匹配到,则输出none

代码展示(python):

  1 def Simple_Search(list, item):
  2     for i in range(0, len(list) - 1):
  3         if list[i] == item:
  4             return i5     return None

二分查找

输入一组有序的数组,目标输出搜索数据的位置(如果有)或者输入none(如果没有)

工作原理:

选取有序数组的中位数,判断需要搜寻的数与此数的关系。

如果该中位数比要找的数大,则将数组缩小到前一半,然后再进行上面的操作

如果该中位数比要找的数小,则将数组缩小到后一半,然后再进行上面的操作

如果该中位数等于要找的数,则该数的索引为此算法的答案。

如果找到只剩下一个数了而且此数不等于要找的数,则该数不再此数组里,返回值为none。

代码展示(python):

  1 def Binary_Search(List_Array, Item):
  2     Low_Index = 0
  3     High_Index = len(List_Array) - 1
  4
  5     while Low_Index <= High_Index:
  6         Mid_Index = ( Low_Index + High_Index ) // 2
  7         Guess_Num = List_Array[Mid_Index]
  8         if Guess_Num == Item:
  9             return Mid_Index
 10         if Guess_Num > Item:
 11             High_Index = Mid_Index - 1
 12         else:
 13             Low_Index = Mid_Index + 1
 14     return None

大O表示法

大O表示法是一种特殊的表示法,指出了算法的速度有多快。

e.g. 二分查找:O(logn)

简单查找:O(n)

理解不同的大O运行时间

算法1:

算法2:

算法1为O(n), 算法2为O(logn)

注:

大O表示法指出了最糟糕情况下的运行时间

还有平均情况也要考虑

一些常见的大O运行时间

 O(log n),也叫对数时间,这样的算法包括二分查找。
 O(n),也叫线性时间,这样的算法包括简单查找。
 O(n * log n),这样的算法包括第4章将介绍的快速排序——一种速度较快的排序算法。
 O(n2),这样的算法包括第2章将介绍的选择排序——一种速度较慢的排序算法。
 O(n!),这样的算法包括接下来将介绍的旅行商问题的解决方案——一种非常慢的算法。

Reference:

《Grokking Algorithms》-Aditya Bhargava

转载于:https://www.cnblogs.com/hungry5656/p/11072188.html

Python 基础算法(1) - 算法简介相关推荐

  1. 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...

    第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...

  2. python基础===八大排序算法的 Python 实现

    本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一 ...

  3. Python基础入门学习和简介

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  4. Python基础(一)简介与安装

    Python是什么? Python是一门解释型语言,他的特点是语法简单.易学,第三方模块最多的一门语言,用的人多,适合于没有代码基础与基础薄弱的人学. 他的应用很广泛,应用于自动化测试.web开发.数 ...

  5. python基础知识资料-Python基础知识篇 列表简介

    1.列表是什么 列表是由一系列特定顺序排列的元素组成,在Python中用方括号来表示列表,用逗号来分隔元素. 1.1访问列表元素 使用索引来访问元素. bicycles = ['trek','cann ...

  6. Python基础教程(一)

    Python基础教程 一.简介 Python的历史和为什么学习Python这里就不在赘述了.处于工作原因,对Python要进行深入的学习和研究,这里主要针对的就是Python具有的丰富和强大的库. P ...

  7. 有关python方面的论文_有关python基础知识的文章推荐5篇

    一.变量命名规则1.变量名只能是字母.数字.下划线的任意组合2.变量名不能以数字开头3.一些保留字段不能作为自定义变量名4变量名需要有明确含义,如保存名字的变量,最好定义为name之类的变量名二.字符 ...

  8. Interview之AI:人工智能领域岗位求职面试—人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础、ML算法简介、DL算法简介)来理解技术交互流程

    Interview之AI:人工智能领域岗位求职面试-人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础.ML算法简介.DL算法简介)来理解技术交互流程 目录 一.A ...

  9. 高频一线大厂 Python 面试题:算法+爬虫+数据处理+基础

    很多学Python的小伙伴找工作时,只是一家家投简历,一遍遍做笔试,一次次去面试,然后一次次被拒绝--其实并不知道如何系统准备一场面试,每次面试都像撞大运,这样的求职过程,既困难又痛苦. 在本文中,我 ...

  10. python深度神经网络算法_02.深度神经网络算法之Python基础与数据分析

    资源内容: 02.深度神经网络算法之Python基础与数据分析|____2016最新python基础篇视频教程22课|____Python学习手册(第4版).pdf|____Python程序入门与进阶 ...

最新文章

  1. 8.8-8.10 usaco
  2. matlab 细化函数,MATLAB图像处理工具箱函数(细化篇).doc
  3. 【leetcode 简单】 第七十七题 单词模式
  4. Ubuntu免密码输入关机脚本
  5. Python——球面两点距离及两条直线夹角的计算
  6. 腾讯微信被怼,iOS版微信不能打赏了
  7. 考研数学真题复盘(2013-2016)
  8. html网页文档无法复制粘贴图片,教你处理不能复制粘贴在网页中的详细图文
  9. 【深度学习】卷积神经网络原理
  10. Next.js中通过容联云通讯实现手机验证码收发
  11. [个人笔记] Zabbix配置钉钉群聊告警机制
  12. 从业多年数据分析师的亲身经验!
  13. 10. Joining Data with dplyr in R
  14. Linux统计文件夹下个数指令
  15. vscode1.65.2 + anaconda 在python拓展为2022.2.1924087327版本上的问题及解决
  16. 成都爱尔樊映川:视网膜上视觉最敏锐部位,出问题怎么办
  17. java object 方法_Java中Object类常用的12个方法,你用过几个?
  18. 计算机硬盘检测和维护,【维护电脑·磁盘检测可纠错·排除隐患】
  19. pd读取文件显示不全问题解决,如何显示全部的列
  20. WinRAR 5.91(64位) 去除广告弹框

热门文章

  1. @RequestParam注解详解
  2. cmake 入门学习
  3. python接口测试类型_python 接口测试字符类型转换
  4. oracle从一个表insert语句,Oracle 使用PLSQL 导出 一个表的insert 语句
  5. flex 文字竖排_flex button字竖排展示
  6. 怎么用python写数据库_如何使用python对数据库(mysql)进行操作
  7. python string模块安装_python String模块-阿里云开发者社区
  8. An Algorithm Summary of Programming Collective Intelligence
  9. 条件随机场(CRF)相对于HMM,MEMM的优势
  10. LOJ #2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)