![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
波哥的技术积累
这个作者很懒,什么都没留下…
展开
-
判断一个字符串是否在另一个字符串中
方法一: String str1 = "nihaoksdoksad "; String str2 = "ok "; int total = 0; for (String tmp = str1; tmp != null&&tmp.length()> =str2.length();){ if(tmp.ind原创 2011-06-15 23:58:00 · 1625 阅读 · 0 评论 -
和为n的连续自然数序列(转)
题目:输入一个正数n,输出所有和为n的连续正数序列,例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6、7-8。思路1:我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2,如果从small到big的序列的和大于n的话,我们向右移动small,相当于从序列中去掉较小的数字。如果从small到bi转载 2012-05-11 23:39:18 · 3014 阅读 · 0 评论 -
海量数据排序总结
问题: 假设一个文件中有9 亿条不重复的9 位整数,现在要求对这个文件进行排序。一般解题思路: 1 、将数据导入到内存中 2 、将数据进行排序 (比如插入排序、快速排序) 3 、将排序好的数据存入文件 难题: 一个整数为4 个字节 即使使用数组也需要900,000,000 * 4byte = 3.4G 内存对于32 位系统,访问2G 以上的内存非常困难,转载 2012-04-21 22:38:36 · 1732 阅读 · 0 评论 -
算法之寻找发帖"水王"
寻找发帖水王就是找出发的贴中,贴子总数占帖子一半以上的那个id package com.test.algorithm;/** * 如果每次删除两个不同的ID,那么剩下的ID列表中,“水王”ID出现的次数仍然超过总数的一半。看到 * 这一点后,就可以通过不断重复这个过程,把ID列表中的ID总数降低(转化为更小的问题),从而得到 * 问题的答案 * @author ccna_z原创 2012-05-02 10:39:24 · 7683 阅读 · 0 评论 -
java之LinkList、ListIterator、ArrayList学习
1:LinkedList学习 LinkedList类是链表节点各种操作的实现,LinkedList类实现了一个带有头尾引用的通用型双向链表。注意,此实现不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如原创 2012-03-20 22:28:39 · 3813 阅读 · 0 评论 -
数据结构之跳转表
链表有一个严重的缺陷:需要顺序扫描来定位所查找的元素。查找从表头开始,若成功,则停在被查元素所在的位置,或是在没有找到这个元素时到达表尾。表中元素有序时可以加快查找速度,但仍需顺序查找。因此我们开始构思一种允许跳过某些节点以避免顺序操作的表。跳转表(skip list)是一种有趣的有序链表的变体,它可以使这种非顺序查找成为可能。 跳转表的结构如下图所示: 上转载 2012-03-10 18:22:15 · 4591 阅读 · 0 评论 -
Java中关于HashMap的使用和遍历
1:使用HashMap的一个简单例子package com.pb.collection;import java.util.HashMap;import java.util.Iterator;import java.util.Set;import java.原创 2011-10-19 10:53:01 · 73070 阅读 · 3 评论 -
希尔排序的算法思想与实现
希尔排序基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 该方法实质上是一种分组插入方法。 给定实例的shell排序的排序过程 假设待排序文件有10个记录,其关键字分别是: 49,38,65,97,76,13,27,原创 2011-06-15 23:43:00 · 7751 阅读 · 0 评论 -
快速排序算法
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列算法过程: Normal 0原创 2011-06-15 17:46:00 · 774 阅读 · 0 评论 -
斐波那契数列的各种算法实现
斐波那契数列,但凡学过编程的童鞋们应该都懂,背景就不介绍了(就是大兔子生小兔子的故事),无论是面试还是实际的运用,常见的一个思路就是先用最先基本的办法实现,然后根据实际要求,一步步改进,优化算法效率。今天就以斐波那契数列这个大家都很熟悉的为例来小小感受一下。Version 1long Fibonacci(int n) { if (n == 0) return 0;转载 2012-05-14 23:46:26 · 25861 阅读 · 9 评论