面试-算法

现在很多公司面试的时候会要求做一些算法题,写一下我面试时遇到的算法题

1.泡沫排序

原理:以升序为例,拿数组中的元素进行两两比较,较大的会放到后面,第一轮会找出最大的元素放到最后,然后进行arr.length-1次,把所有的元素全部排序完成

 1         // 泡沫排序 升序
 2         function pup(arr){
 3              // 共需要arr.length-1轮比较
 4             for(var i=0;i<arr.length-1;i++){
 5                 // 进行两两比较
 6                 for(j=0;j<arr.length;j++){
 7                     if(arr[j] > arr[j+1] ){
 8                      // 调换位置
 9                         var temp = arr[j];
10                         arr[j] = arr[j+1];
11                         arr[j+1]= temp;
12                     }
13                 }
14             }
15             return arr;
16         }
17
18         var arr1 = [1,34,5,33,3,32 ]
19         console.log(pup(arr1))  // Arrar(6)   1,3,5,32,33,34    

2.插入排序

原理:根据已经排好的数组,插入到指定的位置。以升序为例,将要插入的元素和数组中的第一个元素开始比较,直到要插入的元素小于数组中的元素,把它插到这个元素的前面

 1         // 插入排序
 2         function insertSort(arr,x){
 3             for(var i=0;i<arr.length;i++){
 4                 if(arr[i]>x){
 5                     arr.splice(i,0,x) //插入
 6                     break; // 跳出循环
 7                 }
 8             }
 9             return arr
10         }
11
12         var arr2 = [1,3,5,7,788]
13
14         document.write(insertSort(arr2,4))  // 1,3,4,5,7,788

3.在一个公司面试时遇到让数组中的偶数项相加

 1         // 数组中偶数项相加
 2         function odd(arr){
 3             var res = 0;
 4             for(var i=0;i<arr.length;i++){
 5                 if(i%2 !== 0){
 6                     res += arr[i]
 7                 }
 8             }
 9             return res;
10         }
11
12         var arr3 = [3,4,5,67,78,8,3]
13         document.write(odd(arr3))   // 79
时间: 2024-09-29 19:40:43

面试-算法的相关文章

BAT面试算法精品课直通BAT面试算法精品课购买优惠码-牛客网

BAT面试算法精品课,直通BAT面试算法精品课. 大家可以先看试看的内容,视频短小精悍,切中解题的要害.既快速掌握核心知识又能节约复习时间. 反正我是不喜欢拖拖拉拉,长篇大论的视频课程. 况且知识面涵盖的比较广,适合找工作复习用. 第一次购买课程,觉得价格也能接受. 如果你也对这门课感兴趣,可以使用以下优惠码,还能优惠10元 优惠码:Axn54dY 或直接打开链接 http://www.nowcoder.com/courses/1?coupon=Axn54dY

面试算法:利用堆栈计算逆向波兰表达式

更详细的讲解和代码调试演示过程,请参看视频 如何进入google,算法面试技能全面提升指南 给定一个四则运算表达式的字符串,如果该表达式满足逆向波兰表达式,那么该字符串要满足以下条件: 1: 该表达式含有一个数字字符或一串数字字符. 2:它拥有给定格式,如"A, B, .",其中A,B是逆向波兰表达式,句号.表示的是四种运算符"+,-,*,/"其中之一. 例如字符串"3,4,*,1,2,+,+"就满足逆向波兰表达式,该表达式的值为:3 * 4 +

面试算法实习生

昨天刚开始是笔试,完事后两面技术面,最后hr面.第一次面试算法实习生,在此做下笔记,记录面试问题与自己的不足. 笔试: 回来看牛客网,居然发现大部分都有,但可惜我还没刷. 回忆下知识点从网上搜出这套题好多都有(2,5,6,7,8,9,21,42,46,48,49,53,55) 一.选择题 1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 2. 以下两种描述分别对应哪两种对分类算法

面试算法爱好者书籍/OJ推荐

面试算法爱好者书籍/OJ推荐 这个书单也基本适用于准备面试. 一.教科书 基本上一般的算法课本介绍的范围都不会超出算法导论和算法引论的范围.读完这两本书.其它的算法课本大致翻翻也就知道是什么货色了. 1. 算法导论 这本书的内容用三个字来总结,就是伟光正.基本上囊括了经常使用算法的方方面面,证明巨细无遗,十分适合刚開始学习的人阅读. 可是这本书的一大问题就是.证明尽管具体.却从未解释算法背后的理由.仅仅告诉你怎样去做.却从未探讨过为何如此去做. 2.算法引论(Introduction to Al

《Python程序员面试算法宝典》PDF高清版

<Python程序员面试算法宝典>PDF高清版 链接: https://pan.baidu.com/s/1Rtvk_KCmdwvGliyq9Pg9OQ 提取码: i69a ? 内容简介  · · · · · · 本书是一本讲解程序员面试笔试算法的书,代码采用Python语言编写,书中除了讲解如何解答算法问题以外,还引入了例子辅以说明,让读者更容易理解. 本书几乎将程序员面试笔试过程中算法类真题一网打尽,在题目的广度上,通过各种渠道,搜集了近3年来几乎所有IT企业面试笔试算法的高频题目,所选择题

2的整数次幂 面试算法(一)

import java.util.Scanner; public class Pow { public static void main(String []args) throws Exception { Scanner s = new Scanner(System.in); int i = s.nextInt(); System.out.println(test(i)); } /** * 面试算法题目 * 描述 * 请使用递归的方式判断一个给定的整数是否为2的整数次幂. * 提示:当一个数 n

远景面试算法题——FolderSize

描述 文件被存储在磁盘上的时候,通常为cluster方式.每个cluster具有固定的大小,一个文件所消耗的空间量始终是cluster大小的整数倍.因此,如果cluster的大小为100字节,165字节的文件将会使用实际使用200字节的存储空间,造成35个空间的浪费. 一个folder会有多个file,每个file单独计算浪费空间:如果某个folder没有出现,浪费空间为0 定义 Method signature: int[] calculateWaste(String[] files, int

一道看似非常难的面试算法题

这是昨天面试百度时碰到的一道算法题:任意数分三组,使得每组的和尽量相等.由于时间仓促,加之面试时头昏脑涨,这道题没做出来甚至没有给出思路,这让我多少有些遗憾和不甘.因为最近接触算法的东西较多而且本身对算法感兴趣,所以回家之后绞尽脑汁想把这题做出来.其实刚看到这题时感觉不难,但是因为数字个数及数值的不确定,我感觉这题越想越难.昨天一晚上没有睡好,甚至做梦都在想这题! 今天上午在多个群里问了这题,都没有给出思路,真是绝望至极.很多人都说 n/3 的思路,其实这种思路一开始就是死胡同.本人属于那种不会

偶然看到的面试算法题_最短时间找出十包粉末中的两蓝粉末。

题目:有4个杯子,10包粉末,其中有2包溶于水变蓝,其余无色,粉末溶于水2min才能显现颜色.求找出两包蓝色粉末的最短时间.假设水和粉末用不完. 解:以下给出四种解法,标记10包粉末为(1,2 ... ) 杯子为[1,2,3,4]首先我想会不会是有某种算法,dp 二分..@[email protected]..没有,懵懵的. 法一:这是我最初想到的比较傻的方法 第一趟:[12,34,56,78] 每个杯子分别放两包加水融化,剩下两包不管.可能的情况: (1)0个杯子变色,说明剩下两包就是蓝粉末

实习生面试--算法题之一

题目:在整型数中只有1位是1,求1在整型数中的位置? 通常,面试者给的答案是一位一位的右移,并判断是否移位后的值是1,如果是1,输出被移位的位数就是我们要的答案了. 但是这并不是最优的答案,时间复杂度是O(n).那么更好的算法是什么样的呢,其实我们可以采用二分法更高效的解决本问题,时间复杂度是O(logn). 下面给出代码,并测试时间消耗. 算法1 1 int scan(unsigned int value) 2 { 3 int len = sizeof (unsigned int) * 8;