算法设计
XY_Cheetahs
我是程序猿,我为自己代言!
展开
-
使用JavaScript 实现冒泡排序(面试必看)
(以升序排列为例)基本思想: 将相邻的两个元素两两进行比较,如果前者比后者大进行交换,反之,不变。 对每一个相邻的数都进行这样的操作,最后一个就是最大值。 再重复上面的操作,除去最后一个数。 以此类推,最后就会得到一组升序数列。 时间复杂度: 最坏 : O(n2) 最好 : O(n) 空间复杂度: O(1)稳定性: 稳定 (默认的是稳定,但是在实现过程中,在判断中原创 2016-09-18 13:54:44 · 403 阅读 · 0 评论 -
Javascript 实现 二分查找
二分查找针对的是一个有序数列 二分查找的主要思想(分治法): 1. 将要查找的值和中值进行比较 2. 如果查找的值比中值小就在前一段数列中继续同样查找,反之在后一段数列中进行查找 3. 以此类推,直到查找的值和中值相等返回中值下标给定一个有序数列:arr=[2,5,8,9,12,45,50]; JS 递归实现:function search(arr,findVal,start,end){原创 2016-10-10 14:26:31 · 381 阅读 · 0 评论 -
JavaScript 数组去重的常见方法!
数组去重 是前端最常用到的算法之一,而且还是面试中最常被问到的问题之一! 这里给出3种方法供大家参考!给定一个具有重复字符的数组: arr = [1,4,5,5,5,6,6]; 第一种方法 (最笨的方法) 时间复杂度 O(n2): 主要利用 forEach()遍历原数组,find()查找出不重复的push到新数组中 function del(arr){ var newArr = [];原创 2016-09-21 13:02:56 · 756 阅读 · 0 评论