javascript(6)

javascript的冒泡排序

var arr=[5,0,-56,900,12];
//大的排序次数(arr.length-1)
var flag=false;
for(var i=0;i<=arr.length-1;i++){
for(var j=1;j<=arr.length-1-i;j++){
if(arr[j-1]>arr[j]){
var temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
flag=true;
}
}
if(flag){
flag=false;
}else{
flag=true;
}
}
document.writeln(arr);

查找

我们常用的查找有两种:

①顺序查找

②二分查找

二分查找有个前提:该数组是有序的,如果不是有序的数组,则不能使用二分查找。

代码:

 

//思路:找到数组的中间数,和你要查找的数(findVal)进行比较,如果
    //midVal>findVal 则说明findVal在数组的左边,就把该数组二分了(就只在左边查找。)
    function binarySearch(arr,findVal,leftIndex,rightIndex){
        //找到这个值
        if(leftIndex>rightIndex){
            //提示找不到
            document.writeln("找不到");
            return;
        }

        var midIndex=arr[Math.floor((leftIndex+rightIndex)/2)];
        var midVal=arr[midIndex];
        //比较
        if(midVal>findVal){
            //在左边找
            binarySearch(arr,findVal,leftIndex,midIndex-1);
        }else if(midVal<findVal){
            binarySearch(arr,findVal,midIndex+1,rightIndex);
        }else{
            document.writeln("找到 下标为"+midIndex);
            return;
        }
    }

注意:在js中(1+2)/2=1.5,它不会自动截断。需要使用

Math.floor((1+2)/2)

posted @ 2018-10-08 20:26  寒潭渡鹤影  阅读(125)  评论(0编辑  收藏  举报