美文网首页
33 排序算法上

33 排序算法上

作者: 卢卢2020 | 来源:发表于2021-01-23 21:05 被阅读0次

比较得到最小的数

    1 两个数比较方法

let minOf2 = numbers =>numbers[0]<numbers[1]?numbers[0]:numbers[1]  //第一种

let minOf2 =(numbers)=>{ if(numbers[0]<numbers[1]){ return numbers[0] }else{ return numbers[1] }} //第二种   一般用第一种优化代码

let minOf2 = ([a,b]) =>a<b?a:b //这种写法叫做析构赋值,之后的课会反复使用  注意([a,b])这个小括号串括号都不能省


    __调用

minOf([1,2]) //小白调用法

minOf.call(undefined,[1,2]) //这是高手调用法  我们之后都用这种调用法 

minOf2 ==>它有一个现成APIJS内置了Math.min

Math.min(1,2) //1 

Math.min.call(undefined,[1,2])  

Math.min.apply(null,[1,2])   

     2 多个数比较方法

得到一个数的最小值

let min =(numbers ) =>{
    if(numbers.length>2){

        return min([numbers[0],min(numbers.slice(1))])  //得到它的第一个 再比较其它

    }else{

        return Math.min.apply(null,numbers) //Math.min 找到两个数里面的最小值
    }
}

min([44,2,99,3])  //2   

min.call(null,[44,2,99,3])  //看了其它同学的答题 发现这个方法也可以

同理 得到一个数的最大值 我们只需要调用 Math.max方法 代码如下:

let  max=(numbers)=>{
    if(numbers.length>2){

   return max([numbers[0],max(numbers.slice(1))])
    }else{

    return Math.max.apply(null,numbers)
    }
}

比较数组 从小到大排序

let min =(numbers ) =>{    if(numbers.length>2){        return min([numbers[0],min(numbers.slice(1))])   }else{        return Math.min.apply(null,numbers)   }}  

let  minIndex = (numbers ) =>{
return numbers.indexOf(min(numbers)) //minIndex 找到最小的这个数字的下标
}

let sort = (numbers) =>{
    if(numbers.length>2){

    let index = minIndex(numbers) 

    let min = numbers[index]

    numbers.splice(index,1)

    return [min].concat(sort(numbers))
    }else{

    return numbers[0]<numbers[1]?numbers:numbers.reverse()
    }
}

同理 推论得到从大到小排序

let max =(numbers ) =>{

 if(numbers.length>2){ return max([numbers[0],max(numbers.slice(1))]) }

else{ return Math.max.apply(null,numbers)   }} 

let maxIndex = (numbers ) =>{ return numbers.indexOf(max(numbers)) } 

let sort = (numbers) =>{ 

if(numbers.length>2){ 

let index = maxIndex(numbers)    

let max = numbers[index]    

numbers.splice(index,1)

 return [max].concat(sort(numbers)) }

else{ return numbers[0]>numbers[1]?numbers:numbers.reverse() } }      //这个小于号一定要改成大于号  

相关文章

  • 33 排序算法上

    比较得到最小的数 1 两个数比较方法 let minOf2 = numbers =>numbers[0]

  • Java基础(冒泡排序与选择排序)

    冒泡排序 冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一...

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • 归并排序

    归并排序 这个排序算法是建立在归并操作上的一种有效的排序算法,算法主要采用分治法,归并排序的算法复杂度为O(n*l...

  • C++11时代的标准库快餐教程(4) - 排序算法的应用

    排序算法的应用 用排序做集合运算 - 子集,交集,并集与差集 上一节我们讲了排序算法,包括快速排序sort,堆排序...

  • 简单排序--冒泡排序(一)

    冒泡排序算法运行起来非常缓慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一个非常好...

  • 排序算法(上)

    一. 写在前面 要学习算法,“排序”是一个回避不了的重要话题,在分析完并查集算法和常用数据结构之后,今天我们终于可...

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • 简单排序之冒泡排序

    冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法是在刚开始研究排序技术时一个非常好的...

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

网友评论

      本文标题:33 排序算法上

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