随笔分类 - 数据结构和算法
看<<数据结构和算法>>总结
摘要:希尔排序 ===== 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的
阅读全文
摘要:快速排序的时间复杂度是O(NlogN) 算法描述 先从序列中取出一个数作为基准数 分区过程, 将比这个数大的数全部放到它的右边, 小于或等于它的数全部放到它的左边 再对左右区间重复第二步, 直到各区间只有一个数 假设对 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 进行排序, 首先在这
阅读全文
摘要:插入排序 ==== 直接看代码吧, 这个和好理解, 反正我是看着和冒泡排序很像
阅读全文
摘要:桶排序 ==== 通排序非常浪费空间, 比如需要排序的范围在 之间, 需要排序的数是[3,9,4,2000], 同样需要2001个空间 __注意:__ 通排序不能排序小数 以下为从小到大代码实现
阅读全文
摘要:选择排序 === 选择排序每次只记录最大数的索引值. 类似于冒泡排序, 也是要比较 次, 区别是冒泡排序每次都交换, 选择排序只在最后比较完后才进行交换 python !/usr/bin/env python coding:utf 8 def selectSort(nums): for i in r
阅读全文
摘要:冒泡排序的时间复杂度是O(N^2) 冒泡排序的思想: 每次比较两个相邻的元素, 如果他们的顺序错误就把他们交换位置 比如有五个数: 12, 35, 99, 18, 76, 从大到小排序, 对相邻的两位进行比较 第一趟: 第一次比较: 35, 12, 99, 18, 76 第二次比较: 35, 99,
阅读全文
摘要:队列 先进先出(FIFO)结构 不管是 还是 , 必须尽可能以效率最大化的方式实现, 如: 添加元素在列表末尾 队列要实现的需求 由于队列先进先出的特殊性, 在使用list实现的时候, 总会有一个操作出现O(n)的时间损耗, 所以采用 的方式, 即先初始化一个固定大小的空间, 若插入元素发现空间不够
阅读全文
摘要:后进先出(LIFO) 关于栈的操作 下例可以设置栈的大小 python !/usr/bin/env python class Stack: def __init__(self, args): self.stack = [] if args: self.size = args[0] else: sel
阅读全文
摘要:内存管理 包括: 变量无须事先声明 变量无须指定类型 不用关心内存管理 变量名会被"回收" del 语句能够直接释放资源 变量定义 python中, 变量在第一次被赋值时自动声明, 和其它语言一样, 变量只有被创建和赋值后才能被使用 动态类型 变量名无须事先声明, 也无须类型声明 对象的类型和内存占
阅读全文

浙公网安备 33010602011771号