javascript算法(持更)

快速排序

快速排序的原理:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

let arr = [85, 24, 63, 45, 77, 17, 31, 96, 50]
function quickSort (sortArr) {
  if (sortArr.length <= 1) return sortArr // 如果篩選數組只有一個元素就直接return
  let currentIndex = Math.round(sortArr.length - 1) // 生成數組隨機索引
  let currentVal = sortArr.splice(currentIndex, 1)[0] // 找出隨機元素
  let left = [], // 存放比當前元素小的值
  right = [] // 存放比當前元素大的值
  for (let i = 0;i < sortArr.length; i++) {
    if (sortArr[i] > currentVal) {
      right.push(sortArr[i])
    } else {
      left.push(sortArr[i])
    }
  }
  // 
  return quickSort(left).concat([currentVal], quickSort(right))
}
let result = quickSort(arr)

冒泡排序

function sort (sortArr) {
  for (let i = 0; i < sortArr.length; i++) {
    for (let j = i + 1; j < sortArr.length; j++) {
      if (sortArr[i] > sortArr[j]) {
        let temp = sortArr[i]
        sortArr[i] = sortArr[j]
        sortArr[j] = temp
      }
    }
  }
  return sortArr
}
let arr = [85, 24, 63, 45, 77, 17, 31, 96, 50]
let result = sort(arr)

找出數組中最大的數

function findMax(arr) {
  let maxVal = 0
  arr.forEach(element => {
    if (element > maxVal) {
      maxVal = element
    }
  })
  return maxVal
}
let arr = [85, 24, 63, 45, 77, 17, 31, 96, 50]
let result = findMax(arr)

翻轉字符串

function reverseString(str) {
  return str.split('').reverse().join('')
}
let strings = '來吧來吧相約一九九八'
let result = reverseString(strings)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章