数据结构和算法
whbwh123
精益求精,集百家之所长
展开
-
排序算法总结
【1】插入排序: 是一个对少量元素进行排序的有效算法。实现比较简单。时间复杂度:O(n^2),空间复杂度:O(1)。是稳定的排序方法。 代码: view plaincopy to clipboardprint? //insertion sort #include using namespace std; //insertion sort void I转载 2011-10-24 23:20:41 · 405 阅读 · 0 评论 -
HashMap 死循环的探究
本文受http://pt.alibaba-inc.com/wp/dev_related_969/hashmap-result-in-improper-use-cpu-100-of-the-problem-investigated.html 的启发,引用了其中的思想,对此表示感谢。 来到杭州实习有一段日子了,很长时间都没有更新博客了,前几天,闲来无事,随便翻了一本书,毕玄的转载 2012-07-19 20:48:18 · 819 阅读 · 0 评论 -
从数据结构谈HashMap的实现
最近看了下java的数据结构,同时又大致看了下hashMap的实现源码。下面和大家分享下hashMap的实现方式。 hashMap用了一个名字为table的数组;还有若干个名字为entry的链表。看hashMap是如何应用这些数据结构的。用插入举例:hashMap首先会通过key得到其hashCode,具体的hash函数就不说了(因为没多大意义);然后把key的hashCode%tab转载 2012-07-19 20:44:27 · 618 阅读 · 0 评论 -
深入理解HashMap
Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。 1、hashmap的数据结构 要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结转载 2012-07-19 20:42:54 · 766 阅读 · 0 评论 -
三顾java.util.HashMap
如果大家看java.util.HashMap的源码的话,无非需要注意以下几点: 1、k-v如何put/get/remove 2、扩容机制 3、实际使用时,如何配置自己的table初始容量和装载因子的大小 4、如果是并发环境需要注意同步 5、key的hashcode与equals方法重写 下面,我将就这几点来谈谈我的想法: 1、k-v如何put/get/remove转载 2012-07-19 20:46:11 · 795 阅读 · 0 评论 -
字符串的全排列和组合算法
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。 首先来看看题目是如何要求的(百度迅雷校招笔试题)。 一、字符串的排列 用C++写一个函数, 如 Foo(const char *原创 2012-04-17 18:24:03 · 473 阅读 · 0 评论 -
一个关于算法的面试题,来源于网络
/* 一个关于算法的面试题,来源于网络 */ /* 请教大家一个算法题[问题点数:10分] chu009 (chu009) 我面试的时候曾经遇到的一道算法题,写在这大家一起讨论下,争取找出个好的解决方案。 题目是这样的:有两个文件,A文件里有大量的电话号码,上亿条,里面有少量的重复号码,要求把A文件里面的重复号码去掉然后存入B文件。 我的解决方法:建立一个二叉排序树存储所有A文件中不重复原创 2012-02-20 17:23:05 · 571 阅读 · 0 评论 -
微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
class="cpp" name="code">/******************************************************************************* 文 件 名 : test100.cpp 实现功能 : 微软面试题: 有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字 补充原创 2012-02-20 17:21:10 · 835 阅读 · 0 评论 -
一道小算法题的思考
编写程序,把一个n个元素的集合{1,2,3,…,n}中的所有m个元素的子集用字典顺序列出来。例如, {1,2,3,4,5}中3个元素的子集为: {1,2,3},{1,2,4},{1,2,5},{1,3,4},{1,3,5},{1,4,5},{2,3,4},{2,3,5},{2,4,5},{3,4,5} 【第一次尝试:两层for循环】 觉得应该是两层for循环,外层控制集合的生成次数,因为根据原创 2011-12-16 14:05:34 · 489 阅读 · 0 评论 -
寻找逆序对
设A[1...n]是一个包含n个不同数的数组。如果在iA[j],则(i,j)就成为A中的一个逆序对(inversion)。 要确定一个数组中的逆序对的个数,可以采取分治法。将A分为两部分A1和A2,则A中逆序对的数目等于A1中逆序对的数目、A2中逆序对的数目和A1,A2合并时A1中比A2中元素大的数目。 参考代码: view plaincopy to clipboardprint转载 2011-10-24 23:22:13 · 976 阅读 · 0 评论 -
HashMap中的元素玩起了躲猫猫
当你明明put进了一对非null key-value进了HashMap,某个时候你再用这个key去取的时候却发现value为null,再次取的时候却又没问题,都知道是HashMap的非线程安全特性引起的,分析具体原因如下: Java代码 public V get(Object key) { if (key == null)转载 2012-07-19 20:49:59 · 662 阅读 · 0 评论