Files
JavaScript/Sorts/DutchNationalFlagSort.js
Roland Hummel 86d333ee94 feat: Test running overhaul, switch to Prettier & reformat everything (#1407)
* chore: Switch to Node 20 + Vitest

* chore: migrate to vitest mock functions

* chore: code style (switch to prettier)

* test: re-enable long-running test

Seems the switch to Node 20 and Vitest has vastly improved the code's and / or the test's runtime!

see #1193

* chore: code style

* chore: fix failing tests

* Updated Documentation in README.md

* Update contribution guidelines to state usage of Prettier

* fix: set prettier printWidth back to 80

* chore: apply updated code style automatically

* fix: set prettier line endings to lf again

* chore: apply updated code style automatically

---------

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
2023-10-04 02:38:19 +05:30

34 lines
983 B
JavaScript

/**
* @function dutchNationalFlagSort
* @description Dutch National Flag Sort is an algorithm to sort an array containing 0s, 1s, and 2s in linear time.
Time complexity of Dutch National Flag Sort Algorithm is O(n).
Auxiliary Space required for Dutch National Flag Sort Algorithm is O(1).
* @param {Integer[]} nums - Array of integers containing 0s, 1s, and 2s.
* @return {Integer[]} - Array of integers sorted in non-decreasing order.
* @see [Dutch National Flag Sort](https://en.wikipedia.org/wiki/Dutch_national_flag_problem)
*/
export function dutchNationalFlagSort(nums) {
let low = 0
let mid = 0
let high = nums.length - 1
while (mid <= high) {
switch (nums[mid]) {
case 0:
;[nums[low], nums[mid]] = [nums[mid], nums[low]]
low++
mid++
break
case 1:
mid++
break
case 2:
;[nums[mid], nums[high]] = [nums[high], nums[mid]]
high--
break
}
}
return nums
}