Bubble Sort es el algoritmo de clasificación más simple que funciona intercambiando repetidamente los elementos adyacentes si están en el orden incorrecto.
Para saber más al respecto. Por favor refiérase a Bubble Sort
Acercarse:
- Cree una array de valores aleatorios y represente una barra correspondiente a ese valor en términos de altura.
- Cree una función para ordenar burbujas que compare la barra adyacente para intercambiar la barra.
- Para obtener una mejor visualización, establezca el color de la barra que se está procesando actualmente (rojo en el ejemplo que se muestra a continuación).
Ejemplo:
<!DOCTYPE html> <html> <head> <title>Bubble Sort</title> <meta charset="UTF-8"> <script src= "https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.min.js" type="text/javascript"></script> <style> body { padding: 0; } canvas { vertical-align: top; } </style> </head> <body> <script type="text/javascript"> // Set Global Variables let values = []; let w = 20; // To store the state of each bar // in order to change the color let states = []; function setup() { // Create Canvas of Size Windows // Width * Windows Height createCanvas(800, 400); // Insert Random values in array values = new Array(floor(width/w)); for(let i = 0; i < values.length; i++) { values[i] = float(random(height)); states[i] = -1; } // Print Unsorted Array print("Unsorted Array:" + values); // Call to bubble sort function bubbleSort(values, 0, values.length); // Print Sorted Array print("Sorted Array:" + values); } // Definition of bubble sort async function bubbleSort(arr, start, end) { if(start >= end) { return; } for(var i = 0; i < end-1; i++) { for(var j = 0; j < end-i-1; j++) { if(arr[j] >= arr[j+1]) { states[j] = 1; // Call to swap function await swap(arr, j, j+1); states[j+1] = 0; } states[j] = 2; } } return arr; } // Definition of draw function function draw() { background(51); for(let i = 0; i < values.length; i++) { stroke(0); fill(255); if(states[i] == 0) { fill(255, 0, 0); } else if (states[i] == 1) { // Element currently sorting fill("#58FA82"); } else { fill(255); } rect(i*w, height - values[i], w, values[i]); } } // Definition of swap function async function swap(arr, a, b) { await sleep(20); let t = arr[a]; arr[a] = arr[b]; arr[b] = t; } // Definition of sleep function function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } </script> </body> </html>
Producción:
Publicación traducida automáticamente
Artículo escrito por sarthak_ishu11 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA