
算法
珊瑚
这个作者很懒,什么都没留下…
展开
-
递归查找有序二维数组
假设给定一个有序二维数组,每一行都是从左到右递增,每一列都是从上到下递增,如何完成一个函数,输入这样一个二维数组和一个整数,判断这个整数是否在这个二维数组中。 假设一个4×4的有序二维数组: 1 2 8 9 2 4 9 12原创 2012-04-03 16:27:05 · 619 阅读 · 0 评论 -
数据挖掘领域十大经典算法
国际权威的学术组织ICDM,于06年12月年评选出的数据挖掘领域的十大经典算法: C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 一、C4.5 C4.5,是机器学习算法中的一个分类决策树算法, 它是决策树(决策树也就是做决策的节点间的组织方式像一棵树,其实是一个倒树)核原创 2012-06-05 20:00:23 · 330 阅读 · 0 评论 -
单链表是否有环的问题
有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如果找到环的入口点?扩展:判断两个单链表是否相交,如果相交,给出相交的第一个点。 有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。 问题: 1、如何判断一个链表原创 2012-05-27 18:22:03 · 623 阅读 · 0 评论 -
八大排序算法
插入排序 1.直接插入排序 原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。 要点:设立哨兵,作为临时存储和判断数组边界之用。 实现: Void InsertSort(Node L[],int length) { Int i,j;//分别为有序区和无序区指针转载 2012-04-20 20:00:55 · 72 阅读 · 0 评论 -
如何加速程序的运行速度
1. 算法和数据结构 2. 算法调优 3. 数据结构重组 4. 与系统无关的代码调优(如单精度浮点替代双精度浮点) 5. 与系统相关的代码调优(如使用汇编语言重新编写关键函数) 6. 硬件 其中算法和数据结构占绝大部分主要的调优。原创 2012-04-25 20:13:51 · 283 阅读 · 0 评论 -
数组重排序(如何将所有奇数都放在所有偶数前面)
这里介绍一种高效的能在O(n)时间复杂度内完成的算法。 核心思想是:定义两个指针,一个指针A从前往后扫描,一个指针B从后往前扫描。指针A扫描到偶数暂停,指针B扫描到奇数暂停,然后交换着两个数,交换之后继续如上述扫描和交换,直到指针A和指针B重合停止。 这个算法的Java代码如下: package Reorder; public class Reorder { public stati原创 2012-04-05 15:37:20 · 842 阅读 · 0 评论 -
一种求正整数幂的高效算法
核心思想是 当n为偶数时,a^n = a^n/2 × a^n/2 当n为奇数时,a^n = a^(n-1)/2 × a^(n-1)/2 × a 代码如下: public class Power { public static void main(String[] args) { System.out.println(power(5.5,5)); } private sta原创 2012-04-05 14:25:51 · 317 阅读 · 0 评论 -
分别用递归和循环的方式求斐波那契数列
代码如下: public class Fibonacci { public static long recursive(int n) { if (n <= 0) return 0; if (n == 1) return 1; return recursive(n - 1) + recursive(n - 2); } public static long loo原创 2012-04-03 20:51:31 · 865 阅读 · 0 评论 -
如何用两个栈来实现队列
题目:如何用两个栈来实现队列,即实现队列的两个方法——appendTail(插入)和deleteHead(删除)。 分析:核心思想是一个栈正向存储,另外一个栈逆向存储。正向存储的栈用来插入,逆向存储的栈用来删除。 实现的Java代码如下: import java.util.Stack; public class QueneWithTwoStacks { private Stack st原创 2012-04-03 19:59:22 · 323 阅读 · 0 评论 -
最长重复子字符串
题目:给定一个文本文件,查找其中最长的重复子字符串。例如给出banana,那么最长子字符串为ana。 解法:用后缀数组这种数据结构来完成: 后缀数组a[5]来表示,其中 a[0] = banana a[1] = anana a[2] = nana a[3] = ana a[4] = na a[5] = a原创 2012-05-17 21:25:40 · 365 阅读 · 0 评论