esempio

origini cos'è? esempio altri sorting bibliografia
home

Bubble Stort Visualization

Questo codice è un esempio di ordinamento di un array di valori visualizzato in un canvas usando l'algoritmo di ordinamento a bolle (bubble sort) con un'animazione. setup(): Inizializza l'ambiente di disegno. Viene creato un canvas di dimensioni 650x600 pixel e il frame rate viene impostato a 10 frame al secondo. Viene inoltre creato un array chiamato "values" della lunghezza della larghezza del canvas (650). Ogni elemento dell'array viene inizializzato con un valore casuale compreso tra 0 e l'altezza del canvas. draw(): Questa funzione viene chiamata ripetutamente dal programma per disegnare i frame dell'animazione. Il background viene impostato a nero. Vengono quindi visualizzati i valori dell'array "values" come linee verticali sul canvas. L'animazione consiste nell'ordinare gli elementi dell'array utilizzando l'algoritmo di ordinamento a bolle. swap(arr, a, b): Questa funzione scambia gli elementi di un array alle posizioni "a" e "b". Nel ciclo "draw()", viene iterato su tutti gli elementi dell'array "values" e ogni coppia di valori viene confrontata. Se il valore precedente è maggiore di quello successivo, i due valori vengono scambiati utilizzando la funzione "swap()". Questo processo viene ripetuto finché l'array non è completamente ordinato. Quando il ciclo di ordinamento è completato, viene stampato "finished" nella console e l'animazione si ferma usando la funzione "noLoop()".

Daniel Shifmann
http://youtube.com/thecodingtrain

let values = [];
let i = 0;
let j = 0;

function setup() {
createCanvas(600, 250);
frameRate(10);
values = new Array(width);
for (let i = 0; i < values.length; i++) {
values[i] = random(height);
//values[i] = noise(i/100.0)*height;
}
}
function draw() {
background(0);

translate(0, 0);

if (i < values.length) {
for (j = 0; j < values.length - i - 1; j++) {
let a = values[j];
let b = values[j + 1];
if (a > b) {
swap(values, j, j + 1);
}
}
} else {
console.log("finished");
noLoop();
}
i++;
for (let k = 0; k < values.length; k++) {
stroke(255);
line(k, height, k, height - values[k]);
}
}
function swap(arr, a, b) {
let temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}