java 面试题

akqjxx 2010-04-07 10:24:42
麻烦大家帮忙写个算法

一、有1亿个浮点数,请找出其中对大的10000个。提示:假设每个浮点数占4个字节,1亿个浮点数就要站到相当大的空间,因此不能一次将全部读入内存进行排序。


二、巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法

三、将一个N进制数转换成M进制数。
...全文
658 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsbing 2010-04-11
  • 打赏
  • 举报
回复
学习啦!
datmansai 2010-04-11
  • 打赏
  • 举报
回复
还真一个都不会~
princess_rosie 2010-04-11
  • 打赏
  • 举报
回复
第一题的思路大概是 这样的,,一亿个数要取其中一万个
用二分法排序500次就完了,...

期待高手写出答案,我没时间
麦穗 2010-04-11
  • 打赏
  • 举报
回复
yunzhongmaibu 2010-04-11
  • 打赏
  • 举报
回复
学习了。
zhuyouyong 2010-04-11
  • 打赏
  • 举报
回复
没有一个会的,是不是代表我不能做程序员啦!学习下吧!
zqfddqr 2010-04-11
  • 打赏
  • 举报
回复
看看
jinlian52000 2010-04-11
  • 打赏
  • 举报
回复
come baby
simple_pai 2010-04-11
  • 打赏
  • 举报
回复
完全不懂啊~~~~~ mark
wangwenlei_wwl 2010-04-10
  • 打赏
  • 举报
回复
3道题都不难,关键是有思想啊,,,但是想起来很简单,但是做起来难啊

顶下,只能说,革命尚未成功,同志仍需努力啊
akqjxx 2010-04-10
  • 打赏
  • 举报
回复
今天我去面试java,外企,又遇到算法了,快速排序,郁闷惨了。居然问我severlet存在的非线程安全,怎么去解决。
maxtomb 2010-04-09
  • 打赏
  • 举报
回复
哇.原来java面试还要这么高深的算法。学习了。
lolly1220 2010-04-09
  • 打赏
  • 举报
回复
我也是初学者,学习哈
stanley081 2010-04-09
  • 打赏
  • 举报
回复
学习学习。。。
yangxuefeng09 2010-04-09
  • 打赏
  • 举报
回复
路过 顶一下啊
dom72 2010-04-09
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
nafly3 2010-04-09
  • 打赏
  • 举报
回复
真被面到这种题目就完了啊
yan616764567 2010-04-09
  • 打赏
  • 举报
回复
多帮助哦 谢谢!!!
yan616764567 2010-04-09
  • 打赏
  • 举报
回复
我是新人 看到这个社区真好
yaoweijq 2010-04-09
  • 打赏
  • 举报
回复
1.开个10000的最小堆就OK了
2.深度优先搜索
总数
6309300条,可能会有重复(对称)的情况产生
我还没仔细想,贴代码
package com.yaowei.algorithm;

import java.util.ArrayList;

public class ArrayPrime {
public void arrayPrime() {
int[] resultArray = new int[20];
StringBuffer result = new StringBuffer();
boolean []arrayFlag = new boolean[20];
for(int i=0;i<resultArray.length;i++) {
resultArray[i] = 0;
}
for(int i=0;i<arrayFlag.length;i++) {
//全部没有被选择
arrayFlag[i] = true;
}
//把首位置为1
resultArray[0] = 1;
arrayFlag[0] = false;
result.append(1+" ");
int locationIndex = 1;
int totalCount =0;
while(locationIndex > 0) {
int temp = findNextPrime(resultArray[locationIndex-1],resultArray[locationIndex],arrayFlag);
if(temp == 0) {
if(resultArray[locationIndex]!=0) {
arrayFlag[resultArray[locationIndex]-1] = true;
}
resultArray[locationIndex] = 0;
locationIndex--;
}else {
if(resultArray[locationIndex]!=0) {
arrayFlag[resultArray[locationIndex]-1] = true;
}
resultArray[locationIndex] = temp;
locationIndex++;
arrayFlag[temp-1] = false;
}
if(locationIndex == 20) {
locationIndex--;
//20个数都排满了,检查下
if(this.isPrimeNum(resultArray[19]+1)) {
totalCount++;
System.out.println("gg"+locationIndex+java.util.Arrays.toString(resultArray));
}
}
}
System.out.println(totalCount);
}
public int findNextPrime(int a,int b1,boolean []b) {
int start;
if(a%2==0) {
start = 1;
}else {
start = 2;
}
for(int i=start;i<21;i=i+2) {
if(this.isPrimeNum(i+a)&&b[i-1]&&(a!=i)&&i>b1) {
return i;
}
}
return 0;
}
public static void main(String []args) {
ArrayPrime a = new ArrayPrime();
a.arrayPrime();
}
boolean isPrimeNum(int i)
{
if(i<2) return false;
if(i==2||i==3) return true;
if(i%2==0) return false;
int temp = (int)Math.sqrt(i)+1;
for (int j = 2; j < temp; j++)
{
if (i % j == 0)
{
return false;
}
}
return true;
}

3.不难,懒得写了
不用api的话看下纯数学怎么对十进制求二进制
其他进制类推
加载更多回复(14)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧