图解算法

作者: zjxxx | 来源:发表于2019-08-26 13:32 被阅读0次

1. 数据查找之二分法

  • 对象:数组
  • 使用前提:已排序数组
  • 时间复杂度:O(longn)

如下图我们需要在已排序数组中寻找数字21,我们针对已经排过序的数组可以使用二分法来查找。

大体思路为:

找出现在数组顺序为中间位置(序号6)的值(56),用寻找到的数字和数组中间位置值去比较(图中数组中间的值为56,我们要寻找的是21,21<56),那我们寻找的值就在56左边部分的数组中,我们将这部分数组拿出来作为一个新的数组,继续新数组中间位置的值和需要寻找值的大小比较,通过这种比较,我们每次查找都可以将查找的范围缩小1/2,这种方法也就是常说的二分法,接下来我们用代码来实现;


image
def dichomoty(array, find_num):
    min_index = 0
    max_index = len(array) - 1
    while min_index <= max_index:
        mid = int((min_index + max_index) / 2)
        mid_num = array[mid]
        if mid_num == find_num:
            return mid
        if mid_num > find_num:
            max_index = mid - 1
        else:
            min_index = mid + 1
    return None

array_test = [3,15,19,21,37,56,64,75,80,88,92]
print(dichomoty(array_test, 21))

输出结果为

3
[Finished in 0.8s]

2. 选择排序

将数组元素按照从小到大的顺序排序,每次从数组中取出最小值,新增到另一个数组。

def find_small_num(arr):
    small_num = arr[0]
    small_index = 0
    for i in range(len(arr)):
        if small_num > arr[i]:
            small_num = arr[i]
            small_index = i
    return small_index


def select_sort(arr):
    new_arr = []
    for _ in range(len(arr)):
        small_index = find_small_num(arr)
        new_arr.append(arr.pop(small_index))
    return new_arr


array_test = [3,21,15,92,1,45,33,75,99,88,37]
select_sort(array_test)

输出结果为

[1, 3, 15, 21, 33, 37, 45, 75, 88, 92, 99]

相关文章

  • 《算法图解》note 11 总结

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

  • 算法图解读书笔记

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

  • 算法图解 读书笔记

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

  • 算法学习工具

    算法图解可视化工具

  • 图解LZ77压缩算法

    图解LZ77压缩算法

  • 前端

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

  • LZW压缩算法

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

  • 2018-05-10

    算法图解 p28 选择排序

  • 算法图解

    下面是本人在看算法书籍时做的笔记。因为前面的比较基础,就从第五章才开始做的笔记 第五章:散列表 个人理解:概念类似...

  • 算法图解

    前两天刚收到女朋友送的kindle,然后又激发了我看书的兴趣,等等,我为啥要说又?反正有了看书的工具,又刚工作,也...

网友评论

    本文标题:图解算法

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