每天学算法

来源:互联网 发布:dnf深渊补丁软件 编辑:程序博客网 时间:2024/05/23 22:09

在这个问题栽了好多个跟头了,躲都躲不掉,下定决心每天学一点算法,坚持每个算法都用js实现。
一、js实现回文串(犯了个无法原谅自己的错误,从它开始,加油!!!)
实现原理:从前、从后同时遍历,比较arr[i]和arr[j],如果都一样就是回文串。
代码:

 ` var flag = true;    var arr = ['a','b','a'];    function huiwenchuan(arr){        if(arr.length == 1){            return flag ;        }else{            for(var i=0,j=arr.length-1;i<=j;i++,j--){                console.log(i+","+j);                if(arr[i] != arr[j]){                    flag = false;                //    console.log(i+","+j)                }else{                    flag = true;                }            }            return flag;        }    }      huiwenchuan(arr); `

二、快速排序
原理:设定最左边的元素为小兵,分别从最左边个最右边设置游标,先从右向左遍历,如果右边的数大于小兵,位置不变,游标向前移动;如果右边的数比小兵小,那么右边游标不变,值和小兵进行交换,下一步就从左向右遍历.
代码:

   /*快速排序*/var arr =[1,2,5,4,12,11,16,8];function swap(arr,i,j){    var temp = arr[i];    arr[i] = arr[j];    arr[j] = temp    return arr;}function quicksort(array,left,right){    var i = left, j=right;    var pivot = array[i];    while(i<j){        while(i<j && array[j]>=pivot){            j--;        }        if(i<j){            swap(array, i, j);            i++;        }     while(i<j && array[i]<=pivot){        i++;    }    if(i<j){        swap(array, i, j);        j--;    }    }    //务必加判断语句 否则会导致无限调用 堆溢出    if(i>left){        quicksort(array, left, j-1);    }    if(j<right){        quicksort(array, j+1, right);    }    return array;}quicksort(arr,0,8);
原创粉丝点击