美文网首页
前端算法之排序搜索算法

前端算法之排序搜索算法

作者: 终身成长人格 | 来源:发表于2022-04-23 16:48 被阅读0次

    排序搜索算法建议工具

    工具地址:visualgo.net/zh

    一、冒泡排序

    <script type="text/javascript">
    function arrSort( arr ){
        for(let i=0;i<arr.length-1;i++){
            for(let j=0;j<arr.length-1-i;j++){
                if( arr[j] > arr[j+1]){
                    let temp = arr[j];
                    arr[j] =  arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        return arr;
    }
    let arr = [29,10,14,37,14];
    console.log( arrSort( arr ) );
    </script>
    

    二、选择排序

    <script type="text/javascript">
    function sortMin( arr ){
        let indexMin = 0;
        for( let i=0;i<arr.length-1;i++){
            indexMin = i;
            for( let j=i+1;j<arr.length;j++){
                if( arr[j] < arr[indexMin] ){
                    indexMin = j;
                }
            }
            let temp = arr[i];
            arr[i] = arr[indexMin];
            arr[indexMin] = temp;
        }
        return arr;
    }
    let arr = [29,10,14,37,14];
    console.log( sortMin(arr) );
    </script>
    

    三、插入排序

    <script type="text/javascript">
    function insertSort( arr ){
        let len = arr.length;
        for(let i=1;i<len;i++){
            let temp = arr[i];
            let j = i-1;//默认已排序的元素
            //在已经排序好的队列进行从后到前的扫描
            while( j>=0 && arr[j] > temp ){
                //已排序的元素大于新元素,将该元素移动到下一个位置
                arr[j+1] = arr[j];
                j--;
            }
            arr[j+1] = temp;
        }   
        return arr;
    }
    let arr = [5,3,4,2,1];
    console.log(  insertSort(arr)  );
    </script>
    

    四、归并排序

    <script type="text/javascript">
    let arr = [8,4,5,7,1,3,6,2];
    function mergeSort( arr ){
    //视频课程:https://www.xuexiluxian.cn/course/detail/8429c57c800544f6b49fe73f9aae21de
        if( arr.length < 2 ) return arr;
        let mid = Math.floor(  arr.length/2 );
    
        let merge = function(leftArr,rightArr){
            console.log( leftArr,rightArr );
            let resultArr = [];
            while( leftArr.length && rightArr.length ){
                resultArr.push(  leftArr[0] <= rightArr[0] ? leftArr.shift() : rightArr.shift()   )
            }
            return resultArr.concat(leftArr).concat(rightArr);
        }
    
        return merge( 
            mergeSort(arr.slice(0,mid)),
            mergeSort(arr.slice(mid))
        );
    }
    console.log( mergeSort(arr)  );
    </script>
    

    五、快速排序

    <script type="text/javascript">
    let arr = [29,10,14,37,4];
    function quickSort( arr ){
        if( arr.length <=1 ) return arr;
        let mid = Math.floor(  arr.length/2  );
        let pivot = arr.splice(mid,1)[0];
        let left =[];
        let right = [];
    
        for( let i=0;i<arr.length;i++){
            if( arr[i] <pivot ){
                left.push( arr[i] );
            }else{
                right.push( arr[i] );
            }
        }
    
        return quickSort(left).concat([pivot],quickSort(right));
    }
    console.log( quickSort(arr)  );
    </script>
    

    六、二分搜索

    <script type="text/javascript">
    let arr = [1,2,3,4,5,6,7];
    let target = 6;
    //视频课程:https://www.xuexiluxian.cn/course/detail/8429c57c800544f6b49fe73f9aae21de
    function search( arr , target ){
    
        let conut = 1;
        let start = 0;
        let end = arr.length-1;
        while(  start<=end  ){
            //取出中间值
            let middle = Math.floor( (start+end)/2 );
            let guess = arr[middle];
            //如果中间 == 目标值
            console.log( conut );
            if( guess== target ){
                return middle;//返回位置
            }
            if( guess > target ){
                end = middle;
            }
            if( guess < target ){
                start = middle + 1;
            }
            conut++;
        }
        return -1;
    
    }
    console.log( search( arr , target) );
    </script>
    

    相关文章

      网友评论

          本文标题:前端算法之排序搜索算法

          本文链接:https://www.haomeiwen.com/subject/ajvaertx.html