本周参加了一次笔试,四个算法设计题,当时什么都不会,回来研究了两天,下面为研究结果:
1、判断一个整数是否是素数[size=medium]
当时连素数的概念都不知道了,于是当成奇数去写了,真是惭愧啊
/**算法设计:
*素数是指只能被 1 和它本身整除的数字,那么,从 2 到 N-1 之间,如果有任何一个数能*整除 N ,则 N 就不是素数,所以只需要对 N 从 2 到 N-1 进行循环取整即可。但是,只*需要判断到 N/2 就可以了,甚至只需要判断到 N 开平方即可,原因:假设 i*i=N,如果 *N 能被整除,那么其中一个数肯定小于 i ,另一个肯定大于 i ,或者直接就是 i 。
*另外,因为 1 不是素数,所以提前将 1 排除。
*/
public boolean isPrime(int n){
//1不是素数
if(n<=1){
return false;
}else{
for (int i = 2; i <= Math.sqrt(n); i++) {
//如何一时间忘了开平方怎么写,可以循环到n/2
//for(int i=2;i<=n/2;i++){
if(n%i==0){
return false;
}
}
}
return true;
}
2、用二分查找法从一个整数数组中查找任意一个整数,如果存在,返回它在该数组中的位置,如果不存在,返回-1
/**
*说明:这个数组必须是有序的,因为对一个无序数组进行二分查找是没有任何意义的
*算法设计:
*1:设置一个低标志位low,一个高标志位high,一个中间标志位middle,将查找范围定为*整个数组,low为数组的最小下标,high为最下标,middle=(low+high)/2
*2:将 N 与数组中middle标志位的值进行比较,如果相等,则返回middle
*3:如果 N 小于middle标志位的值,则将查找范围定为数组的前半部分,将高标志位移至 *中间标志位的前一位,即high=middle-1
*4:如果 N 大于middle标志位的值,则将查找范围定为数组的后半部分,将低标志位移至
*中间标志位的后一位,即low=middle+1
*5:只要low小于high,则一直执行前3个步骤,如果low大于high,则表示该值不在数组中
*/
//非递归写法
public int binarySearch(int[] arr,int n){
int low = 0;
int high = arr.lenght;
while(low < high){
int middle = (low + high)/2;
if(n == arr[middle]){
return middle;
}else if(n < arr[middle]){
high = middle-1;
}else{
low = middle + 1;
}
}
return -1;
}
//递归写法
public int binarySearch(int[] arr,int n,int low,int high){
if(low > high){
return -1;
}
int middle = (low + high)/2;
if(n == arr[middle]){
return middle;
}else{
if(n < arr[middle]){
return binarySearch(arr,n,low, middle-1);
}else{
return binarySearch(arr,n,middle+1,high);
}
}
}[/size][/size][/size][/size]
分享到:
相关推荐
微策略2012笔试题,四道算法题,一个写作题
顺丰科技2019秋招运筹优化算法工程师笔试客观题合集
主要介绍了基于C++的拼多多算法在线笔试题,列举了四个拼多多的算法笔试题,包括分治法、大数相乘、贪心算法以及迷宫问题,需要的朋友可以参考下
3. 下列关于计算机病毒的四条叙述中,有错误的一条是( )。A A、计算机病毒是一个标记或一个命令 B、计算机病毒是人为制造的一种程序 C、计算机病毒是一种通过磁盘、网络等媒介传播、扩散,并能传染其它程序的程序...
高级java笔试题 Android 高级面试 写给Android的一封信 最近半年,常常有人问我 “Android就业市场究竟怎么样,我还能不能坚持下去 ?” 现在想想,移动互联网的发展不知不觉已经十多年了,Mobile First 也已经变成了...
下列各题A)、B)、C)、D)四个选项中,只有一个是正确的,请将正确选项涂写在答题卡上,答在试卷上不得分。 (1)软件是指 A)程序 B)程序和文档 C)算法加数据结构 D)程序、数据和相关文档的集合 (2)软件调试的...
质药丸的质量为m+1,现在已知这四个容器中,有一个装的全是变质药丸,用电 子秤只称一次,找出哪个容器装的是变质药丸(Microsoft) 答案:把四个容器依次编号为1、2、3、4,然后从中分别取出1、2、3、4 粒药 丸,称...
java的笔试题 CS Learn Notes 更新 Java/大数据/C++/Go 等技术笔记。 目前还不完善,正在不断更新。 一、算法 下面的三个专栏得到了大部分人的点赞,推荐给大家 OJ: Codeforces、LeetCode、NowCoder。 之前在牛客网...
java笔试题算法 TLSH - Trend Micro Locality Sensitive Hash TLSH 是一个模糊匹配库。 给定一个最小长度为 50 字节的字节流 TLSH 生成一个哈希值,可用于相似性比较。 相似的对象将具有相似的散列值,这允许通过...
高级java笔试题 一个Java 攻城狮的笔记 涉及Java,数据结构,算法,前端,数据库的相关知识,补充面试的相关知识。 推荐使用vscode-Markdown Preview Enhanced插件打开。 推荐阅读人群 求职者可以看 :面试技巧; ...
1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分) int a = 4; (A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++); a = ? 答:C错误,左侧不是一个有效变量,不能赋值,可...
java笔试题算法使用 AWS 的 Docker 生产环境 - Microtrader 应用程序 这是 Pluralsight 课程 Docker in Production using AWS 的示例应用程序。 该应用程序基于优秀的 ,尽管进行了一些修改,如下所述: 使用 Docker...
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写 在答题卡上,答在试卷上不得分。 (1) 下列叙述中正确的是A A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n B)对长度...
java笔试题算法使用 FCA 工具进行文档图像二值化和分析 FCA资源 项目内容 最近的理论工作似乎表明,没有绝对的基准来衡量自动解释算法机器感知(语音识别、计算机视觉等)的质量和性能。 因此,我们建议研究正式的...
ee笔试题 面试经历 Java后端- Web开发 - 后台开发 面试笔记 面试答题四大要素和模版,亲历4+1+1六场面试所得 是什么 原理 细节 应用 3月进展 3.16开始,沉心复习,从Java基础看起 《Java面试宝典 第四版》 有很多很...
java笔试题算法概述 是 Donald Knuth 的 Dancing Links 算法的 Java 实现,这是他的算法的快速实现,用于解决精确矩阵覆盖问题。 参见 Knuth 对算法和一些有趣应用的描述。 支持 跳舞链接按原样提供。 如果它坏了,...
java笔试题算法 算法和数据结构的Java实践 项目介绍 本项目通过收集、分解各大厂的常见笔面试题,追本溯源至数据结构和算法的底层实现原理,知其然知其所以然,欢迎更多志同道合的朋友加入算法开源项目:(欢迎提...
java笔试题算法溅 光谱哈希 SPLASH (SPEctraL hASH) 是一种明确的、独立于数据库的光谱标识符,就像 设计用作化学结构的唯一标识符一样。 它包含定义不同信息层的单独块,用破折号分隔。 例如,a 的完整 SPLASH 是...
常见的Java笔试题 我的算法学习笔记 在 coursera 和牛课网上看在线课程学习,顺带在 LeetCode 上刷题。所有算法均用 java 实现,配有思路说明。 如果觉得不错,请先在这个仓库上点个 star 吧,这也是对我的肯定和...