xxxxxxxxxx
77
let nums = [];
let num_elems = 150;
let n = 0;
let j = 0;
let current = 0;
let done = false;
let fast_forward = 50;
function setup() {
createCanvas(700, 400);
for (let i=0; i<num_elems; i++) {
nums.push(random(height));
}
}
function draw() {
background(35);
fill(0,0,255);
for (let k=0; k<fast_forward; k++) {
if (n<nums.length) {
if (j<nums.length-n-1) {
if (nums[j] > nums[j+1]) {
swap(j, j+1);
}
j++;
current = j;
}
else {
j=0;
n++;
}
}
else {
done = true;
}
}
//bubbleSort();
draw_array();
}
function bubbleSort() {
for (let n=nums.length; n>=1; n--) {
for (let i=0; i<n-1; i++) {
if (nums[i] > nums[i+1]) {
swap(i, i+1);
}
}
}
}
function swap(a,b) {
let temp = nums[a];
nums[a] = nums[b]
nums[b] = temp;
}
function draw_array() {
for (let i=0; i<num_elems; i++) {
let wrect = width/num_elems;
let xpos = i * wrect;
if (current == i || done == true) {
fill(0,255,0);
}
else {
fill(0,0,255);
}
rect(xpos, height-nums[i], wrect, nums[i]);
}
}