范文无忧网面试笔试面试回答

一道面试算法题

12月22日 编辑 fanwen51.com

[三支一扶面试技巧:面试怎么演讲]三支一扶面试技巧之“演讲”技巧: 1. 分析自己报考岗位的特点,在面试前找一些比较有代表性的优秀人物和故事,提前准备,便于在考场上应用自如。 2. 提出一个问题,进一步引导听众。...+阅读

这是典型的桶排序算法,

假设有9个桶,每个桶里存放N个数字。桶应该是唯一的。

所以推出结论:

1。桶是唯一的(我们因此可以利用Hashtable的唯一性来做到);

2。桶内成员可以不排序,因此可以利用数组或者Vector来做到;

3。Hashtable需要主键key来唯一标识,正好数字1~9是不重复的,是唯一的;

3。把每个数值的第一位取出来,以第一位值做为key找到hashtable中的相应vector,再将vector.addElements(该数值);

4。完成;

具体做法:

1.生成桶,9个桶,每个桶以数字1~9做为主键命名

Hashtable table=new Hashtable();

for(int i=1;iVector vector=new Vector();

table.put(new String(i), vector);

}

2. 遍历每个数字,将当前数字的第一位分解出来,办法有很多种,比如除十法,这里介绍直接转字符串再取第一位法:

假设你的要处理的数字们放在数组里面int[] tmp;

for(int i=0;iint num=tmp[i];

String str=new String(num);

char ch=str.charAt(0);

//压入到桶里,先把想要的桶找到,利用主键

Vector vect=(Vector)table.get(""+ch);

//找到桶后再把数值压到桶里

vect.addElements(new Integer(num));

}

//取出来的时候,有多种方法,一种是利用key取出Vector,再遍历Vector,得到其中元素,元素的key为String, 内容为Integer

另一种方法是先遍历hashtable再遍历vector

同样的应用还有给一幅被洗过的扑克牌进行升或降排弃,因此可以建13个桶(A~K),每个桶内的牌再按花色排序(相当于对Vector排序,也可以不用Vector而直接用数组或者ArrayList等等)

我看了你的修改提问,现回答如下:

即使不能使用java己经封装好的Hashtable类,自己也可以很轻易地利用代码编写出类似于Hashtable的集合类,用来包容其它对象,并以主键key来唯一标识.

如果你不想这样思考,那么直接用数组来实现桶排序也很方便,外层数组长度是固定的,即1~9共9个数组元素 Elements e=new Elements[9]。

这九个数组元素不是数字,必须是你自定义的类。并用这个类形成链表结构

比如:

public class Element{

int data;//存数字

Element next=null;//下一个元素是谁

}

比如有数字 51,52,53 这三个数都是以5打头,那么他们应该放在一个桶里面,即第五号桶,也就是外层数组的第个元素中。

if( 判断该数字,是否应该放在5号桶){

Elements tmp=new Elements();

tmp.data=该数字;

Elements current=e[4];

if(current==null){current=tmp;}//如果该桶以前从未放过数字,则放进去的就是头部,直接引用就行了,比如51应该放在头部

else{//如果该桶以前己经放过数字,如51,己经放了,现在放52。52就应该做为51的next元素,而53就是52的next就行了

while(current!=null){current=current.next;}//遍历,从而取到最后一个元素的引用

//取到最后一个元素后,current=tmp;即可,这样就形成了链表结构

}

}

通过上述代表形成的结果是, 外层结构是9个元素组成的数组

每个数组元素是Elements类对象形成的链表结构,有头有层通过next字段串连起来。

如果要排序,只需要对每个链表内部进行排序就可以了

延伸阅读:

联通面试问题该怎么回答好一些呢1.联通属于后起之秀,必然具有将达的后劲和发展空间,你选择联通就意味着你选择了更好的更长远的发展。 2.这个不知道你应聘的职位是什么,所以不能具体分析,但是你可以想想你应聘...

去联通怎么样的面试才能通过的(一)淡化面试的成败意识 一位面试者在面试前自认为各方面都比别人优秀,因此,他认为自己可以高枕无忧了。谁知主考官在面试中出其不意,提了一个他前所未闻的问题。顿时,他像失了魂...

教师招聘考试面试的主要内容面试是用人单位选聘录用人才的重要方法和必不可少的步骤,是供需双方相互加深了解的必要途径。面试不仅可以考核应试者的知识水平,而且可以面对面地观察应试者的仪态、气质、口...

招聘考试一般会考些什么内容面试一般会提什么问题考试一般都是面试职位相关知识,如果是技术类,一般会有技术相关知识考试,语言类,一般是语言类相关考试,销售类,一般会问及公司主营业务,还有可能考企业文化,企业背景之类,也有公司会出...

面试主要考核内容是什么企业在面试环节通常会考核仪表风度、专业知识、实习实践经验、口头表达能力、综合分析能力这几方面的内容: 一、仪表风度 这是指应聘者的体形、外貌、气色、衣着举止、精神状...

招警考试笔试和面试考些什么内容笔试。 1、报考人民警察职位的考试类别见各市招录职位简章。 2、笔试内容 A类考试科目:《公共基础知识》(A)、《行政职业能力倾向测验》(A)和《申论》三科。 B类考试科目为:《公共...

事业单位面试考什么内容1、综合类①结构化 事业单位的结构化面试重点考核六大题型:自我认知、综合分析、人际关系、组织管理、情景应变、言语表达。②无领导 无领导可以分为选择类、排序类和开放类...

农业银行校园招聘面试内容有哪些农业银行的面试一般分为两轮,一面和二面。一面主要内容是自我介绍和结构化面试,二面主要内容是无领导小组面试。 【银行常见面试形式简介】 (一)结构化面试 所谓结构化的面试,有...

谷歌面试题中关于算法的问题的具体解答过程谷歌面试题: 平面上N个点,求一条直线,穿过的点数最多 思路:2点确定一条线,N个点共有n(n-1)/2条线,穿过的点数最多的直线,斜率相同的最多,因此只要找出相同斜率最多的点对集合,并且有...

推荐阅读
图文推荐
栏目列表