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);