
数据结构
fsi061787
这个作者很懒,什么都没留下…
展开
-
《Thinking in Algorithm》12.详解十一种排序算法
排序算法在算法中占着很重要的地位,很多算法的实现都是基于排序算法的(如搜索算法和合并算法)。所以排序算法也是笔试面试中必考内容。但是不管他怎么考,也就是那几种算法,一般不会超出我接下来要讲的这11种,所以只要认真的掌握着11中就足够了。那么是哪11种呢,下面是wiki上总结的11种1 Simple sorts1.1 Insertion sort(插入排序)1转载 2014-04-13 19:34:43 · 582 阅读 · 0 评论 -
选择排序法
最好,最坏,平均情况最好:已经排好顺序的集合,这样只需要线性时间即遍历一次集合,每次只需要比较当前元素与前一个元素的大小问题,时间复杂度O(n)最坏:即刚好与所要的顺序相反,时间复杂度为O(n^2)平均:时间复杂度也是O(n^2)由此可知时间复杂度为(n − 1) + (n − 2) + ... + 2 + 1 = n(n − 1) / 2 ∈ Θ(n2) ,不原创 2014-04-13 19:19:22 · 451 阅读 · 0 评论 -
典型比较排序法时间复杂度对比
典型比较排序法时间复杂度对比2008-09-12 13:56 平均情况最好情况最坏情况归并排序O(nlogn)O(nlogn)O(nlogn)快速排序O(nlogn)O(nlogn)O(n2)转载 2014-04-29 20:30:20 · 1149 阅读 · 0 评论 -
利用栈实现中缀表达式转后缀表达式
package com.test2;import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * * @author lmiky * */public class ExpressionTest { /** * 优先级比较 * @param operator1 比较值转载 2014-03-31 21:36:15 · 880 阅读 · 0 评论 -
Java动态规划 实现最长公共子序列以及最长公共子字符串
动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。【问题】 求两字符序列的最长公共字转载 2014-04-19 17:22:39 · 512 阅读 · 0 评论 -
二路归并排序
归并排序介绍 前面我们讲了堆排序,因为它用到了完全二叉树,充分利用了完全二叉树的深度是⌊log2n⌋+1的特性,所以效率比较高。不过堆结构的设计本身是比较复杂的,老实说,能想出这样的结构就挺不容易,有没有更直接简单的办法利用完全二叉树来排序呢?当然是有。 先来举一个例子。你们知道高考一本、二本、专科分数线是如何划分出来的吗? 简单地说,如转载 2014-04-25 11:43:50 · 602 阅读 · 0 评论 -
插入式排序法
插入式排序法——插入排序法插入排序(Insertion Sortion)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始有序表只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。1234转载 2014-04-11 20:25:51 · 640 阅读 · 0 评论