DEV Community

loading...
Cover image for Implement the bubble sort algorithm using TypeScript

Implement the bubble sort algorithm using TypeScript

psparsa profile image PS-PARSA ・2 min read

without any exaggeration, Let's go to the main topic! we start with a question:

what's bubble sort?

bubble sort is a simple sort algorithm to sort a list by scanning and swapping the values in each step if they are in the wrong place (it depends on sort order [ascending/descending]).

bubble sort visualization

Let's go!

in this scenario, we want to sort an array in ascending order.
as we know, an algorithm consists of several specified properties:

  • Input: an initial value in a specified structure.
  • Output: the expected value after processing on Input value.
  • Finiteness: algorithm must stop working after a specified step.
  • Definiteness: the operations of each step must be specified.
  • Effectiveness: the instructions must be simple and without any unnecessary actions.

first of all, to obtain the first requirement (input) we have to construct a function that returns an un-sorted array with random numeric values like the below example:

function genRandomArray(arrLength: number) {
  return [...Array(arrLength)].map(() =>
    Math.floor(Math.random() * (100 * arrLength))
  );
}
Enter fullscreen mode Exit fullscreen mode

okay, now we have a dataset generator so let's explain the algorithm:

in this algorithm we have two pointers, like this:

bubbleSort

in each step, each value will be compared with its next value:

  • if currentValue was bigger than nextValue swap them.

  • if currentValue was smaller than nextValue pass the step and compare the two next values.

  • if currentValue was equal to nextValue do nothing and the same as the last case, pass it and compare the two next values.

  • if pointers reach the end of the list: Repeat the algorithm.

End Of Process: these operations are repeated until all of the numbers are fully sorted (if this not make sense, take a look at the following example).

now come to take a look at implemented code:

function bubbleSort(arr: number[]) {
  const cpyArr = [...arr];
  const { length } = cpyArr;

  console.log(cpyArr);
  console.log();

  const swap = (a: number, b: number): void => {
    cpyArr[a] = cpyArr[a] + cpyArr[b];
    cpyArr[b] = cpyArr[a] - cpyArr[b];
    cpyArr[a] = cpyArr[a] - cpyArr[b];
  };

  for (let x = 0; x < length - 1; x++)
    for (let y = 0; y < length - 1 - x; y++) {
      const [currentIndex, nextIndex] = [y, y + 1];
      if (cpyArr[currentIndex] > cpyArr[nextIndex])
        swap(currentIndex, nextIndex);
    }

  return cpyArr;
}

console.log(bubbleSort(genRandomArray(10)));
Enter fullscreen mode Exit fullscreen mode

a short quotes about swapping from Wikipedia:

In computer programming, the act of swapping two variables refers to mutually exchanging the values of the variables.
Usually, this is done with the data in memory.

HINT: if you want to sort the array in descending order, you merely have to change the Greater than operator to smaller than operator in if condition, it makes the algorithm works reverse!

thanks for reading!

Discussion (0)

Forem Open with the Forem app