Javascript Coding Exercise: The QuickSort Implementation in Java

  • 时间:2020-09-25 11:32:47
  • 分类:网络文摘
  • 阅读:117 次

Given an array of integers nums, sort the array in ascending order.

Example 1:
Input: [5,2,3,1]
Output: [1,2,3,5]

Example 2:
Input: [5,1,1,2,0,0]
Output: [0,0,1,1,2,5]

Note:
1 <= A.length <= 10000
-50000 <= A[i] <= 50000

Relevant posts: How to Implement Quicksort Algorithm in Python – the Pythonic Way and Quick Demonstration of Quick Sort in Python

JS Javascript Coding Exercise: The QuickSort Implementation in Javascript algorithms javascript recursive sorting

NodeJs / Javascript

QuickSort in Javascript

Similarly, the quicksort implementation in Javascript can be done via Recursion. The first step is to pick a random element from the current array, which can be done via generating a random index. Here ia another post: The Recursive QuickSort Implementation in C++

The second step is to group the numbers in the array into three: the smaller ones, the equals ones and the larger ones.

Then, by recursions (to sort out the smaller and larger groups), we can concatenate (append arrays one by one) the groups by using Javascript triple dots notation.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortArray = function(nums) {
    if (nums.length === 0) return [];
    // pick a random value e.g. random.choice
    let x = nums[Math.floor(Math.random() * nums.length)];
    let lt = [];
    let eq = [];
    let gt = [];
    // separate into three groups
    nums.map(a => {
       if (a < x) lt.push(a);
       else if (a === x) eq.push(a);
       else gt.push(a);
    });
    // concatenate the part results
    let n = sortArray(lt);
    n.push(...eq);
    n.push(...sortArray(gt));
    return n;
};
/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortArray = function(nums) {
    if (nums.length === 0) return [];
    // pick a random value e.g. random.choice
    let x = nums[Math.floor(Math.random() * nums.length)];
    let lt = [];
    let eq = [];
    let gt = [];
    // separate into three groups
    nums.map(a => {
       if (a < x) lt.push(a);
       else if (a === x) eq.push(a);
       else gt.push(a);
    });
    // concatenate the part results
    let n = sortArray(lt);
    n.push(...eq);
    n.push(...sortArray(gt));
    return n;
};

Powerful, Simple and elegant – despite the fact that Javascript may look weird in some aspects!

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
奥数题:至少有几名同学所拿的球种类是一致的  奥数题:在离山顶600m处两人相遇  数学题:至少要到什么时候才能再次同时发车  数学题:一个筐里有桃子若干个  数学题:把一根5米长的长方体沿横截面截成3段  细微之处不细微作文  关于节日的作文400字  第一次做蛋炒饭作文100字  赏春作文初中  安全演习心得 
评论列表
添加评论