数据结构和算法
文章平均质量分 55
Abner_Niu
这个作者很懒,什么都没留下…
展开
-
关于Fibonacci的实现
Fibonacci的实现可以用递归调用原创 2014-05-13 16:55:10 · 562 阅读 · 0 评论 -
面试题 用两个栈实现一个队列
那天听朋友说了一个他遇到的面试题:原创 2014-05-13 16:14:25 · 742 阅读 · 0 评论 -
求最大公约数,最小公倍数
/** * 欧几里德递归算法,大数对小数取余直到小数为0,大数为最大公约数 * @param m * @param n * @return */ static int maxCommonDivisor_Euclid_Recursion(int m,int n){ if(m<n){ int temp = m; m = n;原创 2014-06-30 18:16:06 · 514 阅读 · 0 评论 -
求素数
在《计算机的奥秘》第24章“低级语言与高级语言”中介绍了一种求素数的方法:Eratosthenes方法,Eratosthenes是公元前3世纪,古希腊天文学家,数学家,地理学家。Eratosthenes方法是从以2开始的正的自然数列表开始。因为2是素数,则要删除所有是2的倍数的数(即除2以外的所有偶数),这些数都不是素数。因为3是素数,则要删除所有是3的倍数的数。已经知道4不是素数,因为它已被原创 2015-03-30 12:57:17 · 541 阅读 · 0 评论 -
排序-插入排序
参考了http://blog.csdn.net/morewindows/article/details/6665714插入排序的思想是将无序序列中的数插入到有序区间的适当位置,直到所有无序数到插入到有序区间。伪代码如下:1,数组a[n]的元素a[0]被认为是一个有序序列(该序列只有一个数而已)2,将数a[i]插入到之前的a[0...i-1]有序序列中3,直到i==n-1原创 2015-05-02 23:49:04 · 317 阅读 · 0 评论 -
冒泡排序
参考了 白话经典算法系列之一 冒泡排序的三种实现冒泡排序的算法和实现很简单。以从小到大为例。一组数,从头开始,拿出一个依次和之后每一个比较,如果前一个大于后一个,则交换顺序,直到循环完。另外一个一种是,两两比较,把最大的沉到最后一个位置。 /** * 从头到尾遍历,和之后的比较 * @param arr */ pr原创 2015-05-11 10:59:34 · 494 阅读 · 0 评论 -
常用查找算法
1,顺序查找条件:无原理:按顺序比较每个元素,直到找到或遍历完元素为止时间复杂度:O(n) private static int findSequent(int[] arr,int k){ int p = -1; for(int i=0;i<arr.length;i++){ if(k == arr[i]){原创 2015-05-11 15:33:49 · 1071 阅读 · 0 评论 -
快速查找长度未知的单链表的中间结点
在小甲鱼的《数据结构与算法》上,看到的一道企鹅的面试题。我想到的方法比普通的方法要快,但不是最快的。普通方法:先遍历单链表,获取长度后,再找到中间结点。假设长度是L,则所需时间为O(L)+O(L/2) = O(3/2L)我想到的方法:因为想到要获取中间结点,那必须知道长度啊,因此遍历单链表是必需的,在遍历时,将每个结点的值放在数组中,遍历结束知道长度后,从数组中取中间长原创 2015-07-12 20:31:39 · 719 阅读 · 0 评论