js常用的算法整理

1.二分查找法

 function binarySearch(A,x){
    var low = 0,high = a.length -1;
    while(low<=high){
        var mid = Math.floor((low+high)/2);
        if(x==A[mid]){
            return mid;
        }
        if(x<A[mid]){
            high = mid -1;
        }
        else{
            low = mid +1;
        }
    }
    return -1;
  }

2.冒泡排序法

第一次遍历出最大的数,放到最后,依次类推....

function bubblesort(A) {
    for(var i = 0;i<A.length;i++){
        var sorted = true;
        for(var j = A.length-1;j>i;j--) {
            if(A[j] < A[j-1]) {
                swap(A,j,j-1);
                sorted = false;
            }
        }
        if(sorted) {
            return;
        }
    }
}
function swap(arr,i,j){//用于交换数据
    var temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    return arr;
}
var arr1 = [3,2,4,6,1,9]
bubblesort(arr1)
console.log(arr1)//[1,2,3,4,6,9]

3.选择排序法

每次一次遍历出最小的,存放于A[k]中

function selectionSort(A) {
    for(var i = 0 ;i<A.length -1;i++){
        var k = i;//用于存放此次出最小的数
        for(var j = i+1;j<A.length;j++){
            if(A[j] <A[k]) {
                k = j;
            }
        }
        if( k != i) {
           var temp = A[k];
           A[k] = A[i];
           A[i] = temp;
        }
    }
    return A;
}
var A = [2,4,1,3,8,4];
selectionSort(A) //[1, 2, 3, 4, 4, 8]

4.插入排序法

function inserSort(A) {
    for(var i  = 0;i<A.length;i++){
        var x =A[i];
        for(var j = i-1;j>=0&&A[j]>x;j--) {
            A[j+1] = A[j];
        }
        if(A[j+1] !=x) {
        A[j+1] =x;
    }
    }

}
var A=[0,1,3,2,4,9];
inserSort(A);
console.log(A)

5.插排序法(用的比较少)

function inserSort(A) {
    for(var i  = 0;i<A.length;i++){
        var x =A[i]; //x=1
        for(var j = i-1;j>=0&&A[j]>x;j--) {
            A[j+1] = A[j];
            A[1]=A[0]
        }
        if(A[j+1] !=x) {
        A[j+1] =x;
    }
}

}
var A=[2,1,3,2,4,9];
inserSort(A);
console.log(A)//[1, 2, 2, 3, 4, 9]

6.递归找最大值

function findMax(A,i) {
    if(i==0) {
        return A[0];
    }
    var x = A[i-1];
    var y = findMax(A,i -1);
    return y>x ? y:x;
}
var A=[2,4,3,8,5,3]
var m=findMax(A,A.length);//8

 

  

  

时间: 2024-12-08 02:43:51

js常用的算法整理的相关文章

PHP 几种常用的算法整理

一.冒泡排序 <?php $arr=array(1,5,9,7,2,8,4,3,6); //控制冒泡的轮次 for($i=1;$i<count($arr);$i++) { //控制需要比较的次数,每轮冒出一个数 for($k=0;$k<count($arr)-$i;$k++){ if($arr[$k]>$arr[$k+1]){ $tmp=$arr[$k+1]; $arr[$k+1]=$arr[$k]; $arr[$k]=$tmp; } } } print_r($arr); 二.利用

js常用函数整理

前言 整理了一些js常用函数,包括浏览器兼容, 常用字符串处理,获取信息以及移动端信息获取等 ,版本不断补充更新中, 其中大部分函数都已经验证过,如果有错误请及时反馈或者有好的一些工具函数,也可以提出来添加进去,针对相同作用的不同函数, 我会进行优化调整 并且测试,尽可能保证个浏览器兼容,排除冲突等. 先放出50个左右  JS代码如下   可直接copy到JS文件当中,目录不代表顺序,有些函数目录中或许没有显示.如有缺少 还请提出 让我更好的完善.  代码 /** * JSFrame Name:

常用MD5算法代码

常用的MD5算法代码日期: 2014年8月4日作者: 铁锚 MD5,全称为 Message Digest Algorithm 5(消息摘要算法第五版).详情请参考 维基百科:MD5 MD5加密后是一个字节数组, 但我们一般是取其十六进制的字符串表示法,当然,十六进制数字符串是区分大小写,在 mysql数据库,Java,和JavaScript语言中,一般是使用小写的字符串来表示, 而在 Oracle数据库官方提供的包中,返回的是大写字符串,这算是一个坑,如果你想要执行多次 md5,可能需要转换为小

常见数据结构与算法整理总结(上)

数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.算法是为求解一个问题需要遵循的.被清楚指定的简单指令的集合.下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出. 为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几种数据结构,线性表.栈.队列等都提供了较好的实现,就是我们经常用到的Java集合框架,有需要的可以阅读这篇文章.Java - 集合框架完全解析 一.线性表 1.数组实现 2.链表 二.栈与队列 三.树

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

基于.net平台常用的框架整理(转载)

转自:http://www.cnblogs.com/hgmyz/p/5313983.html#!comments 基于.NET平台常用的框架整理 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库. 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memc

基于.NET平台常用的框架整理 [转]

基于.NET平台常用的框架整理[转] 原文地址:http://www.cnblogs.com/hgmyz/p/5313983.html 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库. 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:

jquery常用事件(整理)

Jquery事件 (一).事件列表. 1.blur() 当失去焦点时触发.包括鼠标点击离开和TAB键离开. 2.change() 当元素获取焦点后,值改变失去焦点事触发. 3.click() 当鼠标单击时触发. 4.dblclick()  当鼠标双击时触发. 5.error() 当javascript出错或img的src属性无效时触发. 6.focus()   当元素获取焦点时触发.注意:某些对象不支持. 7.focusin()   当元素或其子元素获取焦点时触发,与focus()区别在于能够检

javascript常用排序算法实现

毕业后,由于工作中很少需要自已去写一些排序,所以那些排序算法都忘得差不多了,不过排序是最基础的算法,还是不能落下啦,于是找了一些资料,然后用Javascript实现了一些常用的算法,具体代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>