• 排序算法


    1.快速排序:

    思路:找到数组中间的元素,把它单拎出来,然后从0开始判断数组中的元素比该基准元素大还是小,小的存左边,大的存右边,然后如此反复递归,得出结果。

    function quickSort(arr){
    if(arr.length<=1){
    return arr;
    
    }
    var mid=arr.splice(Math.floor(arr.length/2),1);
    var leftArr=[];
    var rightArr=[];
    for(var i=0;i<arr.length;i++){
    if(parseInt(arr[i])<=mid){
    leftArr.push(arr[i]);
    }
    else{
    reightArr.push(arr[i]);
    }
    }
    return quickSort(leftArr).concat(mid,quickSort(rightArr))
    }
    

    2.冒泡排序

    1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。
    2.第一轮的时候最后一个元素应该是最大的一个。
    3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。

    
    function quickSort(arr){
    var temp;
        for(var i=0;i<arr.length-1;i++){
            for(var j=0;j<arr.length-1-i;j++){
                if(arr[j]>arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
       return arr;
    }
    console.log(quickSort([4,8,2,6,47,7]))
    
    
    
    

    3.二分查找法

    递归实现

    
    function search(item,arr,start,end) {
        var start=start || 0;
        var end=end || 0;
        var mid=Math.floor((start+end)/2);
        if(item=arr[mid]){
            return arr[mid];
        }
        if(item>arr[mid]){
            return search(item,arr,mid+1,end)
        }else return search(item,arr,start,mid+1)
        return 0;
      }
      console.log(search(5,[4,7,8,65,5,34]))
    
    
    

    非递归实现

    
    function search(arr,item) {
        var start=0;
        var end=arr.length-1;
         arr.sort(function(a,b){
            return a-b
        })
        while(start<=end){
            var mid=Math.floor((start+end)/2);
            if(item==arr[mid]){
                return arr[mid];
            }
            else if(item<arr[mid]){
               end=mid-1;
            }
        else
        {
             start=mid+1;
        }
    }
        return 0;
      }
      console.log(search([6,7,34,7,76,5,6,2],5))
    
    
    
    
    
  • 相关阅读:
    idea 找不到包或找不到符号
    JOISC部分题解
    欧拉数学习笔记
    [清华集训2017]生成树计数
    [ZJOI2019]开关
    【题解】CF817E Choosing The Commander
    CSP-S 2020游记
    【学习笔记】线段树合并
    【题解】[IOI2005]Riv 河流
    【题解】哈希冲突
  • 原文地址:https://www.cnblogs.com/hff-syt/p/12419753.html
Copyright © 2020-2023  润新知