专栏名称: 算法与数据结构
算法与数据结构知识、资源分享
目录
相关文章推荐
算法爱好者  ·  国民软件 QQ ... ·  16 小时前  
九章算法  ·  计算机专业走向,没有悬念了! ·  23 小时前  
算法爱好者  ·  GitHub 资深工程师揭秘:90% ... ·  昨天  
算法爱好者  ·  禁用 Cursor ... ·  2 天前  
九章算法  ·  Meta招聘软件工程师,年薪$21.3w-$ ... ·  昨天  
51好读  ›  专栏  ›  算法与数据结构

前端面试中的常见的算法问题

算法与数据结构  · 公众号  · 算法  · 2016-11-10 22:20

正文

请到「今天看啥」查看全文


. length ; i l - 1 ; i ++ ) {

for ( let j = i + 1 ; j l ; j ++ ) {

if ( arr [ i ] > arr [ j ]) {

let tem = arr [ i ];

arr [ i ] = arr [ j ];

arr [ j ] = tem ;

}

}

}

return arr ;

}

module . exports = bubbleSort ;


除了冒泡排序外,其实还有很多诸如 插入排序,快速排序,希尔排序等。每一种排序算法都有各自的特点。全部掌握也不需要,但是心底一定要熟悉几种算法。 比如快速排序,其效率很高,而其基本原理如图(来自wiki):



算法参考某个元素值,将小于它的值,放到左数组中,大于它的值的元素就放到右数组中,然后递归进行上一次左右数组的操作,返回合并的数组就是已经排好顺序的数组了。


function quickSort ( arr ) {

if ( arr . length 1 ) {

return arr ;

}

let leftArr = [];

let rightArr = [];

let q = arr [ 0 ];

for ( let i = 1 , l = arr . length ; i l ; i ++ ) {

if ( arr [ i ] > q ) {

rightArr . push ( arr [ i ]);

} else {

leftArr . push ( arr [ i ]);

}

}

return []. concat ( quickSort ( leftArr ),[ q ], quickSort ( rightArr ));

}

module . exports = quickSort ;


安利大家一个学习的地址,通过动画演示算法的实现。


HTML5 Canvas Demo: Sorting Algorithms(http://math.hws.edu/eck/jsdemo/sortlab.html)


Q5 不借助临时变量,进行两个整数的交换


输入 a = 2, b = 4 输出 a = 4, b =2


这种问题非常巧妙,需要大家跳出惯有的思维,利用 a , b进行置换。


主要是利用 + – 去进行运算,类似 a = a + ( b – a) 实际上等同于最后 的 a = b;


function swap ( a , b ) {

b = b - a ;

a = a + b ;

b = a - b ;

return [ a , b ];

}

module . exports = swap ;


Q6 使用canvas 绘制一个有限度的斐波那契数列的曲线?



数列长度限定在9.


斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列主要考察递归的调用。我们一般都知道定义


fibo[i] = fibo[i-1]+fibo[i-2];


生成斐波那契数组的方法


function getFibonacci ( n ) {

var fibarr = [];

var i = 0 ;

while ( i n ) {

if ( i 1 )







请到「今天看啥」查看全文