JSFiddle - React, Tailwind, and code Playground
by JInks Peng
JavaScript
function Queue() {
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.front = front;
this.back = back;
this.count = count;
this.toString = toString;
this.isEmpty = isEmpty;
}
function enqueue(elem) {
this.dataStore.push(elem);
}
function dequeue() {
return this.dataStore.shift();
}
function front() {
return this.dataStore[0];
}
function back() {
return this.dataStore[this.dataStore.length - 1];
}
function toString() {
var retStr = "";
for(var i = 0; i < this.dataStore.length; ++i) {
retStr += this.dataStore[i] + "\n";
}
return retStr;
}
function count() {
return this.dataStore.length;
}
function isEmpty() {
if(this.dataStore.length === 0) {
return true;
} else {
return false;
}
}
function distribute(nums,queue,n,digit) {
for(var i = 0; i < n; i++) {
if(digit === 1) {
queue[nums[i] % 10].enqueue(nums[i]);
} else {
queue[Math.floor(nums[i]/10)].enqueue(nums[i]);
}
}
}
function collect(queue,nums) {
var i = 0;
for(var digit = 0; digit < 10; ++digit) {
while(!queue[digit].isEmpty()) {
nums[i++] = queue[digit].dequeue();
}
}
}
function dispArray(arr) {
for(var i = 0; i < arr.length; ++i) {
console.log(arr[i] + " ");
}
}
var queues = [],nums = [];
for(var i = 0; i < 10; ++i) {
queues[i] = new Queue();
nums[i] = Math.floor(Math.random() * 100);
}
console.log("Before radix sort: ");
dispArray(nums);
distribute(nums,queues,10,1);
collect(queues,nums);
distribute(nums,queues,10,10);
collect(queues,nums);
console.log("After radix sort: ");
dispArray(nums);