美文网首页
算法图解1-2/11

算法图解1-2/11

作者: 废柴社 | 来源:发表于2018-03-25 21:56 被阅读11次

原书作者 Aditya Bhargava

1 算法简介

1.1 二分法查找

二分法查找,正是猜数字游戏的玩法:A从1-100中随机挑一个数,B来猜,A返回B猜的数是大了还是小了,最快的一种方法就是二分法(猜50-->小了,接下来猜75……)

二分法查找速度.png
def binary_search(list, item):
  low = 0
  high = len(list)-1
  while low <= high:
    mid = int(round((low + high)/2))  #←---就检查中间的元素
    guess = list[mid]
    print(guess)
    if guess == item:  #←--------找到了元素
       return mid
    if guess > item:
        print('←-------------猜的数字大了')   
        high = mid - 1
    else:
        print('←--------------猜的数字小了')
        low = mid + 1
  return None  #←--------------------没有指定的元素

#测试
my_list = [1, 3, 5, 7, 9]  
print(binary_search(my_list, 3))

1.2 算法运行时间

不同的算法,运行时间差异很大。

简单查找与二分查找.png

五种最常见的算法运行时间

  • O(logn),也叫对数时间,如二分查找。
  • O(n),也叫线性时间,如简单查找。
  • O(n * logn),如快速排序(后续笔记)
  • O(n^2),选择排序(后续笔记)——一种速度较慢的排序算法。
  • O(n!),如旅行商问题。
image.png

2 选择排序

2.1 数组和链表

数组就是一列相邻的数据,位置关系固定,查找(读取很快),要插入1个数据时,必需把后面的数据全部移动一位;但如果内存中的连续空位不够时就比较麻烦;
链表中中每个元素会记录下一个元素的位置,所以插入很好操作——只需修改一个指向记录。删除操作类似的,也只需要更改某下一个元素的指向位置即可。

  • 计算机内存犹如一大堆抽屉。
  • 需要存储多个元素时,可使用数组或链表。
  • 数组的元素都在一起。
  • 链表的元素是分开的,链表中的元素可存储在内存的任何地方,其中每个元素都存储了下一个元素的地址。
  • 数组的读取速度很快。
  • 链表的插入和删除速度很快。
image.png

2.2 选择排序

选择排序:遍历这个列表,找出播放次数最多的乐队,并将该乐队添加到一个新列表中。接下来继续该操作(找到第二多的乐队),最终得到一个有序列表。

从大到小排序-选择排序

每次操作需要针对剩余的n个元素(n,n-1,……1,平均为n1/2),共操作n次,故算法时间为O(nn*1/2),通常忽略常数项,得算法时间为O(n^2)

相关文章

  • 算法图解1-2/11

    原书作者 Aditya Bhargava 1 算法简介 1.1 二分法查找 二分法查找,正是猜数字游戏的玩法:A...

  • 算法图解读书笔记

    date: 2017-9-16 11:11:15title: 算法图解读书笔记 算法图解: http://www....

  • 算法图解 读书笔记

    date: 2017-9-16 11:11:15title: 算法图解读书笔记 算法图解: http://www....

  • 算法图解3/11

    3 递归 3.1 递归与循环 递归需要调用函数本身,只要未达基线条件,持续执行函数本身,达到基线条件则按条件返回结...

  • 3.11 堆的概念及堆排序思路

    Chapter3: 更好的查找与排序算法 11. 堆的概念及堆排序 [1] 图解排序算法(三)之堆排序 讲得很好,...

  • 《算法图解》note 11 总结

    这是《算法图解》的第十一篇读书笔记,是一篇总结。经过1个月的时间,终于把《算法图解》看完了。个人认为,《算法图解》...

  • 算法学习工具

    算法图解可视化工具

  • 图解LZ77压缩算法

    图解LZ77压缩算法

  • 前端

    买一本算法书看一下算法图解

  • LZW压缩算法

    参考链接:超级简单的数据压缩算法—LZW算法压缩算法——lzw算法实现LZW算法 LZW 压缩算法正确图解

网友评论

      本文标题:算法图解1-2/11

      本文链接:https://www.haomeiwen.com/subject/jfmkcftx.html