算法
文章平均质量分 53
吴二喵
拒绝拖延,拒绝熬夜,提高效率!
展开
-
归并排序
排序算法之归并排序归并排序算法是用分治策略实现对n个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。 1、Java代码实现//覆盖mergeSort方法,针对整个数组排序,p的值为0,r的值为数组长度减1 public static void mergeSort(int[] a) {原创 2015-06-05 16:55:17 · 411 阅读 · 0 评论 -
深度优先搜索和广度优先搜索
参考:http://www.cnblogs.com/skywang12345/p/3711483.html一、深度优先搜索图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有原创 2016-10-13 20:40:25 · 353 阅读 · 0 评论 -
静态查找和动态查找
参考:http://blog.csdn.net/pamchen/article/details/8476134首先无论是静态查找还是动态查找,都要有查找的对象,也就是包含很多同类型数据的“表”,这个“表”可以理解为一个由同类型数据元素组成的一个“集合”,该集合可以用各种容器来存储,例如数组、链表、树等,我们统称这些存储数据的数据结构为——查找表。可见,查找表有时是我们传统意义的表,有时候是很复杂的一原创 2016-10-17 10:26:22 · 5855 阅读 · 0 评论 -
堆
堆有两个性质:结构性和堆序性堆是一棵完全二叉树。一棵高为h的完全二叉树有2^h到(2^h+1)-1节点。这意味着完全二叉树的高是⌊logN⌋,显然它是O(log N)。因为它这么有规律,它可以用一个数组表示而不需要使用链。 一个堆结构将由一个Comparable对象的数组和一个代表当前堆的大小的整数组成。堆序性质(最小堆):在一个堆中,对于每个节点X,X的父亲中的关键字小于或等于X中的关键字,根原创 2016-10-20 13:34:20 · 353 阅读 · 0 评论 -
排序算法汇总
一、插入排序插入是稳定排序,它的最差运行时间和平均运行时间都为O(N^2)。以反序输入可以达到最差运行时间。插入排序执行的交换次数等于逆序数。空间复杂度O(N)。//插入排序public static void insertionSort(int[] a){ int k; for(int i = 1; i < a.length; i++){ int tmp = a原创 2016-10-20 01:12:14 · 531 阅读 · 0 评论 -
栈
栈是限制插入和删除只能在一个位置上进行的表,该位置就是栈顶top。基本操作有push和pop。由于栈是一个表,任何实现表的方式都能实现栈。一种是单链表。一种是数组。一、主要应用平衡符号,编译器检查程序的语法错误。后缀表达式的计算中缀到后缀的转换方法调用一般使用一个栈来去除递归。并且编译器在转变成汇编语言时会去除递归。二、栈在java中的使用//新建一个栈stack<Integer> st原创 2016-10-20 13:30:09 · 296 阅读 · 0 评论