随笔分类 - 数据结构与算法
摘要:数组 内存管理器保证了可以随机访问 插入操作:平均要挪动一半的元素 链表 单链表 双向链表 链表时间复杂度: 跳表 核心思想 时间复杂度 维护成本比较高 空间复杂度 小结
阅读全文
摘要:  ,是不稳定排序。 堆 堆排序中的堆有大顶堆、小顶堆两种。他们都是完全二叉树。 将该堆按照排序放入列表 大顶堆:所有的父节点的值都比孩子节点大,叶子节点值最小。root
阅读全文
摘要:冒泡排序 原理 冒泡排序多次遍历列表。他比较相邻的元素,将不合顺序的交换。每一轮遍历都将下一个最大值放大正确的位置上。本质上,每个元素通过“冒泡”找打自己所属的位置。 代码实现 #!usr/bin/env python #-*- coding:utf-8 _*- # __author__:lianh
阅读全文
摘要:选择排序 原理 一种是在所有数据中,从大到小排序,将最大值放入第一个位置;另一种是从小到大排序,将最大值放入最后一个位置。例如,一开始在所有的数据中挑选一个最小项放在第一个位置(假设从小到大排序),再从第二项开始挑选一个最小的值放在第二个位置,以此类推,知道排完序位置。 代码实现 #!usr/bin
阅读全文
摘要:由于字典和集合都是程序中经常需要使用的数据结构,python语言的内置类型包含一个字典类型(dict)和两个集合类型(set和frozenset)。 在python语言的官方实现中,字典和两个集合类型都是基于散列表技术实现的数据结构,采用内消解技术解决冲突。 以dict为例: dict类型采用散列表
阅读全文
摘要:插入排序 原理 一句话概括:依次选择一个待排序的数据,插入到前边已排好序的序列中。 1.从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果 符合条件(比前面的大或者小,自定义),则让他们交换位置。 2.然后再用第三个数和第二个比较,符合则交换,但是此处还得继续往前比较,比如有
阅读全文