您现在的位置:首页 >> 前端 >> 内容

第一次模拟面试问题总结

时间:2017/2/17 9:24:19 点击: 34

  核心提示:冒泡排序,快速排序,二分算法(升序)冒泡排序:从arr[0]开始,每一组相邻的两个元素间进行比较,两层循环,第一次循环完成后会把最大的数放在最后,第二次循环完成后会把第二大的数放在倒数第二的位置,直到...
冒泡排序,快速排序,二分算法(升序)
冒泡排序:从arr[0]开始,每一组相邻的两个元素间进行比较,两层循环,第一次循环完成后会把最大的数放在最后,第二次循环完成后会把第二大的数放在倒数第二的位置,直到排序完成。
function bubbingSort(arr){
                var len=arr.length;
                for(var i=0;iarr[j+1]){
                            var tmp=arr[j];
                            arr[j]=arr[j+1];
                            arr[j+1]=tmp;
                        }
                    }
                }
                return arr;
            }

快速排序:实际中最常用的一种排序算法,速度快,效率高。速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。
(1)递归方法:

var quickSort = function(arr){
                //如果数组长度小于等于1无需判断直接返回即可
                if(arr.length<=1){
                    return arr;
                }
                var midIndex=Math.floor(arr.length/2);//取基准点
                var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1]
                var left=[];//存放比基准点小的数组
                var right=[];//存放比基准点大的数组
                for(var i=0;iright) return;后面的代码不再执行了。这个一定要理解。
            };

(2)非递归:
待完善
二分算法:二分查找,也为折半查找。首先要找到一个中间值,通过与中间值比较,大的放又,小的放在左边。再在两边中寻找中间值,持续以上操作,直到找到所在位置为止。
(1)递归

function binarySearch(data,item,start,end){
    var end=end || data.length-1;
    var start=start || 0;
    var m=Math.floor((start+end)/2);
    if(item==data[m]){
        return m;
    }else if(item<data[m]){ return="" var="" arr="[34,12,5,123,2,745,32,4];" pre="">

(2)非递归

function binarySearch(data, item){
    var h = data.length - 1,
        l = 0;
    while(l <= h){
        var m = Math.floor((h + l) / 2);
        if(data[m] == item){
            return m;
        }
        if(item > data[m]){
            l = m + 1;
        }else{
            h = m - 1;
        }
    }

    return false;
}
var arr=[34,12,5,123,2,745,32,4];
binarySearch(arr,5);

flex布局(display:flex 是CSS3中新的盒子模型) ddisplay的所有属性

语义化标签理解 什么是语义化标签,应该注意什么,有什么好处 代码规范的重要性 部分代码规范注意事项

对H5的理解?(定义,有哪些新增标签,了解多少) 什么是H5 H5所有标签 新增标签详解

部分标签属性的理解和应用 input

作者:网络 来源:yangchu199
请选择您看到这篇文章时的心情: 已有0人表态:
0
0
0
0
0
0
0
0
惊讶 欠揍 支持 很棒 愤怒 搞笑 恶心 不解