[Algorithms] Quicksort algorithm using TypeScript

Posted answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Algorithms] Quicksort algorithm using TypeScript相关的知识,希望对你有一定的参考价值。

Quicksort (also called partition sort and pivot sort) is arguably the most used sorting algorithm. It is the one commonly implemented internally in language runtimes. In this lesson we cover the quick sort algorithm, why is it called quick and how to implement it using TypeScript / javascript.

 

export function quickSort(array) {
  array = [...array];
  partition(array, 0, array.length);
  return array;
}

function partition(array, start, end) {
  const length = end - start;
  if (length <= 1) return;

  // select the pivot
  const pivotIndex = start + Math.floor(Math.random() * length);
  // move the pivot to the beginning of the array
  [array[start], array[pivotIndex]] = [array[pivotIndex], array[start]];
  // get the pivot value
  const pivot = array[start];
  // get the pivot index
  let pivotRank = start;
  // loop thought the array, swap every number each is smaller
  // than the pivor
  for (let index = start + 1; index < end; index++) {
    if (array[index] < pivot) {
      // increase the rank poisition first
      pivotRank++;
      // swap the current number and rand poisition
      [array[index], array[pivotRank]] = [array[pivotRank], array[index]];
    }
  }
  // move the pivot to the pivotRank position
  if (pivotRank !== start) {
    [array[start], array[pivotRank]] = [array[pivotRank], array[start]];
  }

  partition(array, start, pivotRank);
  partition(array, pivotRank + 1, end);
}

const test = [5, 1, 8, 7, 4, 3, 6, 9];
const res = quickSort(test);

document.write(res);

 

 Simpfily way:

function quickSort (array) {

    if (array.length <= 1) {
        return array;
    }

    let pivotIndex = 0;
    let pivot = array[pivotIndex];

    let less = []
    let greater = []

    for (let i in array) {
        if (i != pivotIndex) {
            array[i] > pivot ? greater.push(array[i]): less.push(array[i]);
        }
    }

    return [
        ...quickSort(less),
        pivot,
        ...quickSort(greater)
    ]
}

console.log(quickSort([6, 5, 4, 3, 2, 1, 7,9, 8]))

 

 

以上是关于[Algorithms] Quicksort algorithm using TypeScript的主要内容,如果未能解决你的问题,请参考以下文章

Algorithms - Quicksort - 快速排序算法

Algorithms - Quicksort - 快速排序算法

Quicksort

Sorting Algorithms

使用 Go 实现快速排序

Ultra-QuickSort