算法

算法在鄙人目前的工作中用得很少,但闲暇之余逛知乎,走简书,许多大神无不强调着算法的重要性!算法考量了程序员的基础、思维能力以及内功的深厚程度。

于是,便花时间学习总结了一些常见的算法:

// 冒泡算法
    var arr = [2,15,21,4,121,1410,12,45,1001,178,1216874,1546874,1245];
        function bubbleSort(arr) {
            var len = arr.length;
            for (var i = 0; i < len; i++) {
                for (var j = 1; j < len; j++) {
                    if (arr[j] > arr[j+1]) {        //相邻元素两两对比                      
                        var temp = arr[j];          //元素交换
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
            return arr;
        }
        console.log(bubbleSort(arr));
// 元素交换
    function swap (a,b) {
        b = b - a;
        a = b + a;
        b = a - b;
        return [a,b]
    }
    console.log(swap(1,2));
//快速排序
var arr = [2,15,21,4,121,1410,12,45,1001,178,1216874,1546874,1245];
    function quickSort (arr) {
        console.time();
        if(arr.length <=1 ){
            return arr;
        }
        var leftArr = [],rightArr = [];
        var q= arr[0];
        for(var i = 1 ; i<arr.length;i++){
            if (arr[i] > q) {
                rightArr.push(arr[i]);
            } else {
                leftArr.push(arr[i]);
            }
        }
        console.timeEnd();
        return [].concat(quickSort(leftArr),[q],quickSort(rightArr));
    }
    console.log(quickSort(arr));
// 字符串出现最多的字符和出现次数
    var str = "nninihao";
    var o = {};
    for(var i = 0 ; i<str.length;i++){
        var _char = str.charAt(i);
            console.log(_char);//ninihao
        if(o[_char]) {
            o[_char]++;
        } else {
            o[_char] = 1;
        }
    }
    console.log(o); //{n: 3, i: 2, h: 1, a: 1, o: 1}
    var max = 0;
    for( var key in o) {
        if(o[key] > max) {
            console.log(key);   // n
            console.log(o[key]);   // 3
            max = o[key]; //始终令max保持最大值
        }
    }   
    for( var key in o ) {
        if(o[key] == max) {  //当出现次数等于最大值时输出
            console.log("最多的字符是" + key);
            console.log("出现的次数是" + max);
        }
    }
    //查找某个字符串出现的位置
    var arr = "aabfcsdfks";
    var index = -1;
    do{
        console.log(index);//-1 3 7
        index = arr.indexOf("f", index+1);
        console.log(index);//3 7 -1
        if (index != -1) {
            //字符串没有出现,返回-1
            console.log(index);//3 7 
        };
    }
    while(index != -1);

持续更新中..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值