示例代码中的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. c# ado 连接数据库 六步曲

    建立连接分为六步:1.定义连接字符串,oracle 的连接字符串为: private static string connString = "Data Source=192.168.1.13 ...

  2. OSG中的示例程序简介(转)

    OSG中的示例程序简介 1.example_osganimate一)演示了路径动画的使用 (AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera ...

  3. Android手机拨打电话的开发实例

    一部手机最常用的功能就是打电话和发短信了,在Android开发中我们如何通过程序拨打电话呢?本文就给出一个用Android手机拨打电话的简单的实例. 下面是开发此实例的具体步骤: 一.新建一个Andr ...

  4. Helpers\Database

    Helpers\Database The database class is used to connect to a MySQL database using the connection deta ...

  5. 如何判断一个数是否为素数(zt)

    怎么判断一个数是否为素数? 笨蛋的作法: bool IsPrime(unsigned n){    if (n<2)    { //小于2的数即不是合数也不是素数    throw 0;    ...

  6. Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  7. ASP.NET MVC 4 让数据库自动迁移

    今天实际测试了下这个方法,可以保持数据库与实体类同步,同时不会出现数据库迁移的提示.但是只能更改实体类来改变数据库,而不能改数据库来改变实体类.所以这才是Code frist,如果通过改数据库表来改动 ...

  8. Android之ListView常用技巧

    ListView是一个非常常用的列表控件,虽然在5.x时代ListView的风头正在逐渐的被RecyclerView抢去,但是ListView的使用范围依然十分广泛. 接下来的ListView的常用技 ...

  9. CSS skills: 4) goto page head script

    //返回顶部 $(document).on('click', '.backTop', function (e) { $('html, body').animate({scrollTop: 0}, 50 ...

  10. Linux 2.6的内核编译过程

    由于上课需要,老师指定使用linux-2.6.26内核.本人是菜鸟级别的. 由于本人安装的ubuntu系统中,没有自带GCC,故需要自己安装gcc, 首先启用ROOT权限  输入:sudo -i 获取 ...