随笔分类 - 数据结构于算法分析
摘要:二叉堆: 右数组建立的堆,在任意位置i上,左节点为2i,右节点为2i+1,父亲在i/2上, 数组的0位置为空的前提,否则是2i+1,2i+2 小顶堆堆中的每一个节点小于他的儿子,根节点没有父亲。大顶堆每一个节点大于他儿子节点 插入要求:尾部插入,然后调整堆,直到这个堆顺序稳定 调整的过程使得小元素不
阅读全文
摘要:贪婪算法 在每一个阶段做出的决定可以认为是好的,而不考虑将来的结果这意味着选择是某个局部的最优,当算法终止时我们希望局部最优就是全局最优。例子:找零钱 简单的调度问题 非预占调度:一旦开始某一个作业,就必须把该作业运行到底 哈夫曼算法 在森林中,每次挑选2个权最小的树结合成棵新树 装箱问题:运行效率
阅读全文
摘要:预备知识 深度:根节点为0,从叶子到根节点最长的路径 先序遍历:为节点标记深度 中序遍历:查找二叉树的输出 后序遍历:计算树的深度 二叉树 构造表达树:将后缀表达式转换成表达树 如果符号是数字,进栈; 如果符号是操作符,则弹出两个数字,作为左右节点,根节点为操作符 再把这棵树进栈 二叉查找树:左节点
阅读全文
摘要:冒泡排序: static void MP_sort(int[]array){ for(int i=0;i<array.length;i++) for(int j=i+1;j<array.length;j++) if(array[j]<array[i]){ int temp=array[i]; arr
阅读全文
摘要:散列是一种以常数平均时间执行插入删除和查找的技术;散列表无法寻找最大最小值;与排序相关的应当选择二叉查找树 实现散列表的方法: 理想的散列表数据结构只是一个包含一些项的具有固定大小的数组 散列函数:解决关键字映射数组的下标问题, 一种方法是将将关键字用ASCII码加起来得到一个整数,再去对表的长度取
阅读全文
摘要:表ADT 表的简单数组实现 表的扩展 int []arr= new int [10]; int [] newArr=new int [arr.length*2]; for(int i=0;i<arr.length;i++) newArr[i]=arr[i]; arr=newArr; 简单链表 Jav
阅读全文
摘要:尽量少用mod运算,因为他非常慢 递归的四条基本法则 基准情形:必须有某些情形不用递归就能求出,也就是边界 不断推进:每一次递归的调用必须使状况朝向一种基本情形推进;也就是每一次参数和结果都有所变化,避免死递归; 设计法则:假设所有递归都能运行 合成效益法则:在求解一个问题的同一实例时,切勿在不同的
阅读全文

浙公网安备 33010602011771号