xxxxxxxxxx
67
let numbers = [];
let index = 0;
let digits = 1;
let maxNumber;
function setup() {
createCanvas(800, 400);
frameRate(10);
for (let i = 0; i < width / 10; i++) {
numbers[i] = Math.floor(random(1000));
if (numbers[i] > maxNumber) {
maxNumber = numbers[i];
}
}
}
function draw() {
background(220);
radixSortLSD();
displayNumbers();
index++;
if (index >= digits) {
noLoop();
}
}
function radixSortLSD() {
let buckets = [];
for (let i = 0; i < 10; i++) {
buckets[i] = [];
}
let divisor = Math.pow(10, index);
for (let i = 0; i < numbers.length; i++) {
let digit = Math.floor((numbers[i] / divisor) % 10);
buckets[digit].push(numbers[i]);
}
let k = 0;
for (let i = 0; i < 10; i++) {
for (let j = 0; j < buckets[i].length; j++) {
numbers[k] = buckets[i][j];
k++;
}
}
digits++;
}
function displayNumbers() {
let barWidth = width / numbers.length;
let barHeight = height / maxNumber;
for (let i = 0; i < numbers.length; i++) {
let x = i * barWidth;
let y = height - numbers[i] * barHeight;
if (index > 0 && i >= numberså.length - digits) {
fill(255, 0, 0); // Highlight the current digit
} else {
fill(0);
}
rect(x, y, barWidth, numbers[i] * barHeight);
}
}