摘要: 一、哈希表 1、表查找 哈希表(HashTable,又称为散列表),是一种线性表的存储结构。通过把每个对象的关键字k作为自变量,通过一个哈希函数h(k),将k映射到下标h(k)处,并将该对象存储在这个位置。 例如:数据集合{1,6,7,9},假设存在哈希函数h(x)使得h(1) = 0, h(6) 阅读全文
posted @ 2018-09-25 20:25 活的潇洒80 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 一、什么是队列? 定义: 二、队列的实现 1、单向队列 输出结果 2、内置队列操作文件(相当于linux的tail功能) 1、代码 2、test 3、输出结果 三、队列的实现原理 四、环形队列 阅读全文
posted @ 2018-09-25 20:05 活的潇洒80 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 一、链表基础 1、什么是链表? 链表中每一个元素都是一个对象,每个对象称为一个节点,包含有数据域key和指向下一个节点的指针next。通过各个节点之间的相互连接,最终串联成一个链表。 2、节点定义 打印结果: 3、头结点 二、链表的操作 1、链表的遍历 1、图形 2、代码 2、链表节点的插入 1、头 阅读全文
posted @ 2018-09-25 19:42 活的潇洒80 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 一、栈的应用——迷宫问题 1、解题思路 2、实现代码 二、队列的应用——迷宫问题 1、解题思路 2、实现代码 阅读全文
posted @ 2018-09-25 17:13 活的潇洒80 阅读(711) 评论(0) 推荐(0) 编辑
摘要: 一、基本原理 桶排序假设输入数据服从均匀分布,防止所有元素集中在少数几个桶中,平均情况下它的时间代价为O(n)O(n) 。基本思想: 桶排序将[0,1)区间划分为n个相同大小的子区间,也就是桶,然后将n个输入数据分别放到各个桶中,为了得到输出结果,我们队每个桶中的数进行插入排序,最后遍历所有桶按照次 阅读全文
posted @ 2018-09-25 17:12 活的潇洒80 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 一、10算法分类 本文一共总结了10种排序算法,其中 基于比较的排序算法有 冒泡排序,插入排序,希尔排序,选择排序,归并排序,堆排序,快速排序; 线性时间排序算法包括 计数排序,基数排序,桶排序; 前边有提到过,基于比较的排序算法,时间复杂度最差达到O(nlogn)O(nlogn),无法突破这个界限 阅读全文
posted @ 2018-09-25 17:12 活的潇洒80 阅读(7634) 评论(0) 推荐(0) 编辑
摘要: 一、重排列 方法一: 方法二: 二、二维二分查找 方法一: 方法二: 三、 Two Sum 1、题目描述 2、方法一 3、方法二 https://leetcode.com/problems/two-sum/description/ 四、区域查询 方法一: 阅读全文
posted @ 2018-09-25 17:12 活的潇洒80 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 一、问题: 现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量? 二、解决方案: 代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 >>> p = (4, 5) >>> 阅读全文
posted @ 2018-09-25 17:11 活的潇洒80 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 一、基本原理 计数排序的思想类似于哈希表中的直接定址法,在给定的一组序列中,先找出该序列中的最大值和最小值,从而确定需要开辟多大的辅助空间,每一个数在对应的辅助空间中都有唯一的下标。 限制:计数排序假设n个输入元素中的每一个元素都是在0到k区间内的一个整数,只可处理非负数;计数排序的基本思想:对每一 阅读全文
posted @ 2018-09-25 17:10 活的潇洒80 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 一、基本原理 基数排序是基于计数排序的,基数排序着眼于输入序列的每一位数,每一轮排序都是根据序列中的某一位数进行排序,从低位到高位各进行一次这种排序思想,最终序列便是有序的。由于输入序列每一位数都是有限的,比如十进制序列,每位数都是0~9的数字,于是可以选择计数排序对序列某一位数进行排序。同样,基数 阅读全文
posted @ 2018-09-25 17:10 活的潇洒80 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 一、详细调整过程(不打印li, low, mid, high) 1、实现代码 2、打印结果 1 "C:\Program Files\Python35\python.exe" E:/工作目录/python/test/heap.py 2 [5, 97] 3 [57, 20] 4 [5, 97, 57, 阅读全文
posted @ 2018-09-25 17:09 活的潇洒80 阅读(2004) 评论(0) 推荐(0) 编辑
摘要: 一、数组和列表的区别 区别一: 数组中存放的数据类型必须一致,可以存放基本类型数据 list中可以存放不同类型数据,但不能存放基本类型数据 区别二: 数组不能删除制定位置元素,除非重建数组对象 list移除某一元素后,后续元素会前移 区别三: 数组初始化后大小固定,且数据都已经被赋值 列表长度是根据 阅读全文
posted @ 2018-09-25 17:07 活的潇洒80 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 一、栈的基本概念 二、栈的Python实现 1、操作方法 2、实现代码1 打印机结果 3、代码2 打印结果 三、栈的应用——括号匹配问题 1、问题描述 2、实现代码 阅读全文
posted @ 2018-09-25 17:07 活的潇洒80 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 一、希尔排序思路 二、图解希尔算法 三、希尔排序代码 四、希尔排序性能分析 1、算法复杂度 会根据增量的不同而不同,一般来说: 时间复杂度: 1. 最好情况:O(n^1.3) 2. 最坏情况:O(n^2) 空间复杂度:O(1) 2、稳定性 稳定性:不稳定(相同元素的相对位置会改变) 希尔排序的时间复 阅读全文
posted @ 2018-09-25 17:06 活的潇洒80 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 一、归并排序基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 分而治 阅读全文
posted @ 2018-09-25 17:05 活的潇洒80 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 一、堆排序小根堆 二、堆排序内置模块 一、内置模块总览 2、实现堆排序 1、实现代码 2、测试结果 3、打印堆的第一个和第二个数 1、实现代码 2、测试结果 4、加大测试范围 1、实现代码 2、测试结果 1 "C:\Program Files\Python35\python.exe" E:/heap 阅读全文
posted @ 2018-09-25 17:04 活的潇洒80 阅读(2606) 评论(0) 推荐(0) 编辑