快速sort.ts

typescript
阅读 43 收藏 0 点赞 0 评论 0

quick-sort.ts
function quicksort(array: number[], left: number, right: number) {
  if (left >= right) {
    return
  }
  const pivot = array[Math.floor((left + right) / 2)]
  const index = partition(array, left, right, pivot)
  quicksort(array, left, index - 1)
  quicksort(array, index, right)
}

function swap(array: number[], left: number, right: number) {
  const t = array[right]
  array[right] = array[left]
  array[left] = t
}

function partition(
  array: number[],
  left: number,
  right: number,
  pivot: number
) {
  while (left <= right) {
    while (array[left] < pivot) {
      left++
    }

    while (array[right] > pivot) {
      right--
    }

    if (left <= right) {
      swap(array, left, right)
      left++
      right--
    }
  }
  return left
}

const array = [2, 5, 7, 8, 9, 5, 9, 20, 11, 43, 80]
quicksort(array, 0, array.length - 1)
console.log(array)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号