
Data Structure & Algorithms
文章平均质量分 75
chosen0ne
互联网码农,对Linux,分布式计算和存储,编译器,nginx,脚本语言感兴趣
展开
-
链表的插入排序
相对于在数组上进行插入排序,链表的插入排序效率会更高一点,更形象(因为的确是插入的)。假设序列a[0..n-1],a[0..j]是已排序的子序列,a[j+1]是待插入的元素。那么数组的插入排序时,不仅需要元素的比较,还要进行元素移动。而链表的插入排序时,仅仅需要通过比较找到插入位置,然后执行插入即可。所以,链表的排序中,插入排序是相对效率较高的排序 void List::insertSort(原创 2010-01-18 20:09:00 · 2528 阅读 · 0 评论 -
算法:用小数表示分数
<br />题目要求:用小数形式表示形如N/D这样的分数,N是分子,D是分母。如果是循环小数,将循环节放置在括号中,例如:1/3=0.33333333...=0.(3),123/444=0.27702702702...=0.27(702),4/5=0.8<br /> <br />import java.util.ArrayList;import java.util.Scanner;import static java.lang.System.*;/** * 用小数表示分数N/D,如果出现循环原创 2011-05-05 16:29:00 · 1881 阅读 · 0 评论 -
类似位图的数据结构BitsSet
此数据结构最主要用途是对整数进行计数,通过将集合中每个元素指定为1,2或4个bit,以降低空间复杂率。实际使用的是int数组,通过位操作实现将1个int划分为多个包含1,2或4个bit的元素。当元素包含1个bit时退化为位图。 类似于Map,对整数进行计数。将1个int划分成32/(2^n)个包含 2^n 个bit的元素,从而实现对BitsMap的下标进行[0,2^(n+1) )的计数。例如,n=0,则1个int包含32个元素,每个元素包含1个bit。BitsMap中对应每个元素的值为原创 2011-05-30 16:05:00 · 1515 阅读 · 0 评论 -
麒麟远创面试题1:随机播放CD
题目要求:一个CD机,有一个专门存放CD的CD仓。现在,CD仓中存有n张CD,要求这个CD机可以随机播放这n张CD一次,即要保证每张CD都会播放一次且仅播放一次 在面试之前上网查过麒麟的面试题,其中有这道题,但是当时没在意,也没有仔细想如何做。面试的时候,想到了一个算法,基于分治算法,应该可以很好的解决这个问题。 算法思想:把cd仓看成是一个大小为n的数组a,题目的要求是随机访问a中n个元素一次且仅一次。可以基于分治法将这个问题划分成两个子问题,解决完子问题后再合并子问题。划分子问题如下原创 2011-01-11 16:10:00 · 4497 阅读 · 1 评论 -
麒麟远创面试题3:二叉树中求两个节点的最低公共祖先节点
题目要求:求二叉树中两个节点p,q的最低公共祖先节点原创 2011-01-11 20:54:00 · 5114 阅读 · 0 评论 -
插入集--按照顺序插入元素,得到排序集合
在之前的项目中,用到了插入集,具体的需求就是:在稀轴排花中,每个排花方法都有一个评价(方法优劣),找出最优的10个排花方法。插入集就是根据插入排序,在添加元素时,先搜索它的最终位置,然后插入,当所有元素插入完毕后,得到一个排序的集合。适用于的模型:在N个数中找出最大或最小的K个(K个元素需要排序)。只需要设定插入集的容量为K并且定长,然后遍历这N个元素,将他们添加进插入集,最后得到一个排好序的集合原创 2011-05-06 14:47:00 · 7049 阅读 · 0 评论