入门算法

104 阅读1分钟

求最小值

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

排序算法

实现数组排序(思路:递归)

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 minIndex = (numbers) => numbers.indexOf(min(numbers))

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

归并排序

let mergrSort = arr => {
  let k = arr.length
  if(k===1){return arr}
  let left =arr.slice(0,Math.floor(k/2))
  let right =arr.slice(Math.floor(k/2))
  return merge(mergeSort(left),mergeSort(right))
}
let merge = (a,b)=>{
  if(a.length === 0) return b
  if(b.length === 0) return a
  return a[0] > b[0] ?
    [b[0]].concat(merge(a,b.slice(1))) :
    [a[0]].concat(merge(a.slice(1),b))
}