js 二分法查找 冒泡排序 插入排序

二分法查找

算法就是前后两个指针向中间靠拢来查找

  /***二分法查找
* params 要查找的数组
 * destNum 要找到的数值
 */
 function findNums(params,destNum) {

 let mid=Math.ceil(params.length/2)

 if(params[mid]==destNum)
 return true;

 let start=0;
 let end=params.length-1;
 while(start!=mid){
      if(params[start]==destNum
        ||params[end]==destNum)
      return true;
     console.log('start',start,mid)
     console.log('end',end,mid)
    start++;
    end--;
 }
 console.log('没有找到')
  return false

}

插入排序

算法主要思路是 抽出一个数据 将数组分成了两部分 数据前面的部分 和数 据后面的部分 。
例如数组 1 ,3 2,1. 取出2,前面部分是1,3 后面部分是1,这个时候要将2插入到1,3里;

  //插入排序 从小到大排序  
  function insertSort(array){
      //存储较小的数据 也是待插入到前面部分的数据
    var temp=null;
  // 第一个循环 从前向后依次取出一个数据 
 for(var i=1;i<=array.length-1;i++){
       if(array[i]=0&&temp

冒泡排序

其实就是每次循环都把本次循环中最大的数据放到最后面去。
冒泡就是小的上浮 大的下沉。

//从小到大冒泡排序 每次大循环都把最大的数据移动到最前面
 function popMaxSort(array){
 console.log('原数据',array)

   for(var i=0;i<=array.length-1;i++){
       var isExchange=false;//设置是否发生了交换  如果不发生交换说明排序已完成
        for(var j=0;j<=array.length-1-i;j++){
          if(array[j]>array[j+1]){
           isExchange=true;//说明还未排序完成
               var max= array[j];
               array[j]=array[j+1];//小数放前面
               array[j+1]=max;//大数放后面
          }
        }   
       
        console.log('冒泡',i,array)
        if(!isExchange){//排序已完成就退出循环
           break;
        }  
   }
   console.log('冒泡排序结果', array)
  }
js 二分法查找 冒泡排序 插入排序_第1张图片
image.png

冒泡循环提供另外一种写法 :每次循环都把最小的数据放到最前面

 function popMinSort(array){
  console.log('原数据',array)
 for(var i=0;i<=array.length-1;i++){//控制遍历次数
      var isex=false;
      for(var j=array.length-1;j>=i;j--){//每一遍都吧最小的数据移动到最前面
           //前面   后面
        if(array[j-1]>array[j]){
       
             isex=true;
          
           min= array[j];
           array[j]=  array[j-1];//大的放后面
           array[j-1]=min;//小的放前面
            
        }
      }   

      console.log('冒泡',i,array)
      if(!isex){//没有发生交换 排序已完成
           break;
      }
 }

 console.log('冒泡排序结果', array)
}
js 二分法查找 冒泡排序 插入排序_第2张图片
image.png

快速排序法

  //从小到大排序
  function quickSort(array){
   console.log('原数据',array)
 function sort(destArray){
    if(!destArray|| destArray.length<=1){
         console.log('返回的数据',destArray)
         return destArray;
    }

    var mid= destArray[0];//采用第一个元素做基准
    var leftS=[];
    var rightS=[];
    for(var i=1;imid){//与基准比较 大的放右边 小的放左边
              rightS.push(destArray[i])
         }else{
              leftS.push(destArray[i]);
         }
    }

 return    sort(leftS).concat([mid],sort(rightS));
   
 }
 array=  sort(array);
 return array;
 }
console.log('快速排序法', quickSort([23,11,89,45,67465,465,456,4,2343,6]))

你可能感兴趣的:(js 二分法查找 冒泡排序 插入排序)