zoukankan      html  css  js  c++  java
  • 排序算法

    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))
    
    
    
    
    
  • 相关阅读:
    重置root密码
    JavaEE完整体系架构
    Analysis servlet injection
    隔离级别
    ULVAC爱发科皮拉尼真空计SW1-N说明书-手册
    研华advantech-凌华ADLINK板卡运动控制卡
    vc6.0转vs2012的一些错误与解决方法
    MFC时间简单比较方法
    MFC_VC++_时间获取与保存列表控件内容到文件操作方法
    show and hide. xp扩展名
  • 原文地址:https://www.cnblogs.com/hff-syt/p/12419753.html
Copyright © 2011-2022 走看看