示例代码中的arr指的是给出的数组,s指的是数组的起始坐标0,end指的是数组的最后一个坐标arr.length-1,n指的是要查找的数字

查找某个值:

1.线性法

 function findInArr(arr,item){
for(var i=0;i<arr.length;i++){
if(arr[i]==item){
return true;
}
}
return false;
}

2.二分法

 function findInArr(n,s,e){
//n为查找数字,s为起始位置下标0,e为结束为止下标arr.length-1
if(s>e){
return fasle;
}else if(s==e){
if(arr[s]==n){
return true;
}else{
return false;
}
}
//这里的数组arr是已经从小到大排过序的数组
var c=Math.floor((s+e)/2);
if(arr[c]==n){
return true;
}else{
if(n<arr[c]){
return findInArr(n,s,c);
}else{
return findInArr(n,c+1,e);
}
}
}

查找最小值:

     var arr=[1,28,47,53,68,108,200];
function findMin(s,e){
//s,e为数组下标start,end
if(s>e){
return null;
}else if(s==e){
return arr[s];
}else if(s==e-1){
if(arr[s]<arr[e]){
return arr[s];
}else{
return arr[e];
}
}
var c=Math.floor((s+e)/2);
var l=findMin(s,c);
var r=findMin(c+1,e);
if(l<r){
return l;
}else{
return r;
}
}

去重:

 function findInArr(arr,n){
for(var i=0;i<arr.length;i++){
if(arr[i]==n){
return true;
}
}
return false;
}
function removeDup(arr,s,e){
if(s>e){
return [];
}else if(s==e){
return [arr[s]];
}
var c=Math.floor((s+e)/2);
var l=removeDup(arr,s,c);
var r=removeDup(arr,c+1,e);
while(r.length){
if(findInArr(l,r[0])){
r.shift();
}else{
l.push(r.shift());
}
}
return l;
}

排序:

1.二分法

 function mySort(arr,s,e){
if(s>e){
return [];
}else if(s==e){
return [arr[s]];
}else if(s=e-1){
if(arr[s]<arr[e]){
return [arr[s],arr[e]];
}else{
return [arr[e],arr[s]];
}
}
var c=Math.floor((s+e)/2);
var l=mySort(arr,s,c);
var r=mySort(arr,c+1,e);
var aResult=[];
while(l.length||r.length){
if(l[0]<right[0]){
aResult.push(l.shift());
}else{
aResult.push(r.shift());
}
if(l.length==0){
aResult=aResult.concat(r);
break;
}else if(r.length==0){
aResult=aResult.concat(l);
break;
}
}
return aResult;
}

2.冒泡排序

 function bubbleSort(arr){
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length;j++){
if(arr[j+1]<arr[j]){
var c = arr[j+1];
arr[j+1] = arr[j];
arr[j] = c;
}
}
}
return arr;
}

3.选择排序

 function findArr(arr,start){
var iMin = arr[start];
var iMinIndex = start;
for(var i=start;i<arr.lengthli++){
if(arr[i]<iMin){
iMin=arr[i];
iMinIndex=i;
}
}
return iMinIndex;
}
function selectionSort(arr){
for(var i=0;i<arr.length;i++){
var index=findMin(arr,i);
var c;
c=arr[index];
arr[index]=arr[i];
arr[i]=c;
}
return arr;
}

4.归并排序

 function mergeSort(arr,s,e){
if(s>e){
return [];
}else if(s==e){
return [arr[s]];
}else if(s==e-1){
if(arr[s]<arr[e]){
return [arr[s],arr[e]];
}else{
return [arr[e],arr[s]];
}
}
var c = Math.floor((s+e)/2);
var left = mergeSort(arr,s,c);
var right = mergeSort(arr,c+1,e);
var aResult = [];
while(left.length||right.length){
if(left[0]<right[0]){
aResult.push(left.shift());
}else{
aResult.push(right.shift());
}
if(left.length==0){
aResult = aResult.concat(right);
break;
}else if(right.length==0){
aResult = aResult.concat(left);
break;
}
}
return aResult;
}

5.快速排序

 function quickSort(arr,s,e){
if(arr.length==0){
return [];
}
var n = Math.floor((s+e)/2);
var c = arr.splice(n,1);
var left = [];
var right = [];
for(var i=0;i<arr.length;i++){
if(arr[i]<c[0]){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return quickSort(left,0,left.length-1).concat(c,quickSort(right,0,right.length-1))
}

利用js来实现一些常用的算法的更多相关文章

  1. javascript常用经典算法实例详解

    javascript常用经典算法实例详解 这篇文章主要介绍了javascript常用算法,结合实例形式较为详细的分析总结了JavaScript中常见的各种排序算法以及堆.栈.链表等数据结构的相关实现与 ...

  2. 转载部长一篇大作:常用排序算法之JavaScript实现

    转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...

  3. 利用JS脚本通过getAttribute()和setAttribute()等对CSS样式进行操作

    HTML中引入CSS样式的方式有三种: 1.最常用的,引入样式表,在样式表中编写样式,引入方式如下:<link href="css/style.css" rel=" ...

  4. 面试中常用排序算法实现(Java)

    当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...

  5. 常用排序算法java实现

    写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...

  6. Python实现常用排序算法

    Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...

  7. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

  8. Java常用排序算法及性能测试集合

    测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...

  9. js混淆代码还原-js反混淆:利用js进行赋值实现

    js混淆代码还原-js反混淆:利用js进行赋值实现   [不想用工具的直接看方法二] 本文地址:http://www.cnblogs.com/vnii/archive/2011/12/14/22875 ...

随机推荐

  1. hdu 5279 Reflect phi 欧拉函数

    Reflect Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_chi ...

  2. C# 利用范型与扩展方法重构代码

    在一些C#代码中常常可以看到 //An Simple Example By Ray Linn class CarCollection :ICollection { IList list; public ...

  3. 搭建Nginx图片服务器

    搭建Nginx图片服务器 Part-I 安装Nginx 安装PCRE 下载 ngx_cache_purge 并解压,用来清除缓存 下载Nginx并解压 cd nginx-1.7.7 编译,--pref ...

  4. 让你的PHP程序真正的实现多线程(PHP多线程类)(转)

    通过WEB服务器来实现PHP多线程功能. 当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程. 但不管怎么样,它还是能满足我们的一些需要的 ...

  5. Error creating bean with name &#39;menuController&#39;: Injection of autowired dependency……

    出现了一大串错误 Error creating bean with name 'userController': Injection of autowired dependencies failed. ...

  6. python实现之极简stack和queue

    用python实现一个极简的stack和queue,那是so easy的事情了,简洁易懂,适合小白~ 直接上代码吧: node: class LinkNode: def __init__( self, ...

  7. How to Setup Replicated LevelDB Persistence in Apache ActiveMQ 5.9--转载

    原文地址:https://simplesassim.wordpress.com/2013/11/03/how-to-setup-replicated-leveldb-persistence-in-ap ...

  8. win7 debian 双系统修改引导项顺序

    转载:http://jingyan.baidu.com/article/72ee561aa1d123e16138df81.html 问题描述: 个人在宿舍使用的比较多的是Window 7,而它的启动项 ...

  9. 在Code first中使用数据库里的视图

    如果想在Code first中使用数据库里的视图 (不管你出于什么原因),目前的方法有2种. 一.使用Database.SqlQuery<T>("查询语句"),如: v ...

  10. Python Thread

    lock 对象: acquire():负责取得一个锁.如果没有线程正持有锁,acquire方法会立刻得到锁.否则,它闲意态等锁被释放. 一旦acquire()返回,调用它的线程就持有锁. releas ...