数据结构与算法
文章平均质量分 79
入眸幻灭
写代码也是艺术的一种
展开
-
快速排序算法
快速排序原理与实现:data=[1,5,45,78,65,98,11,67,32,97,120,64]首先选定一个基线作为判断标准,最简单的就是取list[0],但这会影响效率,后面再说优化base=data[0]然后定义两个list,分别存储当前list中小于基线和大于基线的数据 small=[] #定义小于基线的集合 big=[] #定义大于基线的集合写个for循环把数据装进去 ...原创 2018-03-12 17:41:59 · 184 阅读 · 1 评论 -
二分查找算法原理与实现
应用场景:已知有序的数字型集合,给定一个数字,返回在集合中的位置时间:O(logN)算法流程图:注意要在递归的过程中记录集合的前后指针,以下是代码实现(基于python3):#_*_ coding:utf-8 _*_#二分查找 O(logN)def binary_search(list,target): #定义指针 low=0 high=len(list)-1 ...原创 2018-03-12 18:00:46 · 1790 阅读 · 0 评论 -
图,最短路径算法(广度优先搜索算法,狄克斯特拉算法)
(代码使用python3.6)1.广度优先搜索算法用途:求得通过节点最少的路径问题:找出名字以m结尾的人,并求出you到这个人的最短路径数据代码实现:from collections import deque#无权最短路径算法:广度优先搜索算法,求得通过点最少的路径graph={}graph["you"]=["alice","bob","claire"]graph["bob"]=["an.原创 2018-03-26 21:46:29 · 2030 阅读 · 0 评论 -
动态规划python实现
什么叫动态规划问题?考虑一个场景:当你有去沙漠旅行,你有一个背包和一些物品,背包有最大承受重量,物品也有重量和价值,而物品种类很多,不可能全都装在背包里,如何去选取价值总量最高的物品组合呢?物品价值表物品名价值water10book3food9jacket5camera6物品重量表物品名重量water3kgbook1kgfood2kgjacket2kgcamera1kg考虑使用贪婪算法,那就是什么...原创 2018-03-27 16:25:27 · 25153 阅读 · 4 评论 -
java利用动态数组实现栈(先进后出)
public class ResizingArrayStack<Item> implements Iterable<Item>{ private Item[] a=(Item[]) new Object[1]; private int N=0; public boolean isEmpty(){return N==0;} public int...原创 2018-04-10 16:45:17 · 1899 阅读 · 0 评论 -
java使用链表实现栈(先进后出)
public class LinkStack <Item> implements Iterable<Item>{ private Node first;//栈顶 private int N;//元素数量 private Node temp;//遍历对象 public boolean isEmpty(){ return N==...原创 2018-04-10 16:46:28 · 1446 阅读 · 0 评论