- Javascript Basics Tutorial
- Javascript - Home
- Javascript - Overview
- Javascript - Syntax
- Javascript - Enabling
- Javascript - Placement
- Javascript - Variables
- Javascript - Operators
- Javascript - If...Else
- Javascript - Switch Case
- Javascript - While Loop
- Javascript - For Loop
- Javascript - For...in
- Javascript - Loop Control
- Javascript - Functions
- Javascript - Events
- Javascript - Cookies
- Javascript - Page Redirect
- Javascript - Dialog Boxes
- Javascript - Void Keyword
- Javascript - Page Printing

- JavaScript Objects
- Javascript - Objects
- Javascript - Number
- Javascript - Boolean
- Javascript - Strings
- Javascript - Arrays
- Javascript - Date
- Javascript - Math
- Javascript - RegExp
- Javascript - HTML DOM

- JavaScript Advanced
- Javascript - Error Handling
- Javascript - Validations
- Javascript - Animation
- Javascript - Multimedia
- Javascript - Debugging
- Javascript - Image Map
- Javascript - Browsers

- JavaScript Useful Resources
- Javascript - Questions And Answers
- Javascript - Quick Guide
- Javascript - Functions
- Javascript - Resources

# Queue Reconstruction by Height in JavaScript

In this problem statement, our task is to write a function for queue reconstruction by height with the help of Javascript. So basically we have to arrange the given array data by height.

## Understanding the problem statement

The problem statement says to write a function in Javascript with the help of we can arrange the queue as per the height. This will be done by queue reconstruction.

The Queue Reconstruction by height problem is done by arranging a queue of persons based on their height and the number of people in front of them who are taller or have the same height. Every person is represented by [h, n] in which h is the height of the person and m is the number of people in front of the person with a height greater than or equal to h.

The task is to sort the people in a way that the queue should be reconstructed with the help of their height and m values.The condition to arrange the heights should be: the tallest persons should be at the front of the queue and among persons of the same height, those with small value of k will be placed first.

## Logic for the above problem

The given problem can be implemented by first sorting the given array by descending order of heights and if the height is same then arrange by ascending the value of k. So we can insert every person from the sorted persons array into the result array at the index specified by their k value with the help of splice method.

The resultant array will be containing the persons in the correct order as required.

## Algorithm

**Step 1** − Define a function to arrange the array values by height of the persons and name it reconstructQueue and pass an array of persons.

**Step 2** − Inside the function sort the persons array by descending height, and if height is same, then by ascending m.

**Step 3** − Now create a blank array for storing the result of the sorted queue.

**Step 4** − Insert persons into the result array as per their m value. Use a for loop to iterate the persons array and with the help of splice method we can insert each person from the sorted persons array into the result array at the index specified by their m values.

**Step 5** − Get the value of the result array and return its value to show the reconstructed queue.

## Code for the algorithm

function reconstructQueue(persons) { // sort the persons array by descending height, and if height is same, then by ascending m persons.sort((a, b) => { if (a[0] === b[0]) { return a[1] - b[1]; } else { return b[0] - a[0]; } }); let result = []; // insert persons into the result array according to their m value for (let i = 0; i < persons.length; i++) { result.splice(persons[i][1], 0, persons[i]); } return result; } const persons = [[7, 0], [4, 4], [7, 1], [5, 0], [6, 1], [5, 2] ]; const result = reconstructQueue(persons); console.log(result);

## Complexity

The time for the execution of the function reconstructQueue is O(n^2) in which n is the number of persons in the input array. This is because for every person in the array we have to insert them into the result array at a decided index with the help of splice method. The method has a worst case time complexity of O(n) as it involves shifting all the items after the specified index by one position to the right. So the overall time complexity will be O(n^2). The space complexity for the function is O(n) because we have created a new array to store the result with the final ordering of the persons.

## Conclusion

The function we have created above sorts the given array of persons based on their height and m values and reconstructs a queue as per their order. The reconstructQueue function has time complexity of O(n^2) and space complexity of O(n).

- Related Articles
- Queue Reconstruction by Height in C++
- Queue Data Structure in Javascript
- Creating a Queue in Javascript
- The Queue Class in Javascript
- The Priority Queue in Javascript
- Implementation of Queue in JavaScript
- Sequence Reconstruction in C++
- What is difference between Microtask Queue and Callback Queue in asynchronous JavaScript?
- Peeking elements from a Queue in Javascript
- Implementing circular queue ring buffer in JavaScript
- State Failure, Collapse & Reconstruction
- Clearing the elements of the Queue in Javascript
- Creating a Priority Queue using Javascript
- What is Ideal Reconstruction Filter?
- Add elements to a Queue using Javascript