Cuprins:

Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort): 4 pași
Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort): 4 pași

Video: Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort): 4 pași

Video: Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort): 4 pași
Video: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, Iulie
Anonim
Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort)
Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort)

En el mundo de las ciencias de la computation, saber ordenar listas es como saber escribir. Es una buena manera de ver como los algoritmos son una manera de hacer las cosas en una computadora, y que la forma directa de hacer algo no es la mejor en una computadora. Acă explico uno de los algoritmos más cnocidos de comutación that is the "Bubble Sort", și explică cu detalii în care constă

Este instructabil, consideră că este AVANZADO, dar nu are nimic ca și cum ar fi dificil, așa că și dacă nu sunt experto sau experta no importa, haz el intento igual …

Pasul 1: ordonați listele?

¿Ordenar Listas?
¿Ordenar Listas?

Hoy en día usamos la calculadora în toate lucrurile. Los teléfonos hoy en día son practic practic super calculatoare. Mientras las computadoras toman data, se construiesc liste de date. O listă de date este un ansamblu de date ca acesta:

{Tomás, Abraham Carolina, Matias, Maria, Marcela}

Es una lista de nombres. Ahora bine, în multe ocazii, avem nevoie de ordinare, se spune acomodarea listei într-un ordin particular, de exemplu de primar la minor sau viceversa, o în ordine alfabetic.

¿Porqué ordenarlos? Veamos el ejemplo de la lista de nombres de la imagen. Es una lista larga, si les pido busquen el nombre IRENE, în care lista este mai ușor? en la ¿ordenada verdad? bueno por eso mismo ordenar listas de datos es algo extremadamente important într-o calculatoare, pera apoi putând folosi datele de formă efectivă.

¿Cómo los ordeno? pasemos al siguiente paso

Pasul 2: Algoritmo "Bubble Sort" Ordenamiento De Burbuja

Image
Image

Dacă aveți o listă de numere, o nombres, ¿Cómo las puedo ordenar? Existen muchas maneras de hacerlo, acá les voy a explicar la que se llama "Bubble Sort", nu este de cele mai rapide, de fapt poate că sea de las peores, dar dacă este un bun exemplu de cum o idee se descrie ca un algoritmo, y luego se escribe como un programa de computadora. În plus, creo que ve super bonito în circuit circuit playground.

La Idea

La idea del Bubble Sort, es la de burbujas flotando, si ha dos burbujas y una es más grande que la otra, la más liviana pasa a la más pesada, y así se van acomodando … es muy similar a tener una caja de piedras de diferentes tamaños, si las sacudo por suficient tiempo, las más pesadas se van al fondo y las livianas se quedan arriba.

El Algoritmo

Los pasos del algoritmos son:

  1. Tenemos una lista de 1 a n elementos
  2. Comenzar por el 1
  3. Pregătiți-vă dacă numărul în poziția actuală este primar care este în poziția următoare
  4. Si es mayor cambiarlos, sino, dejarlos igual
  5. Mutare o poziție
  6. Si es el n, entonces marcar n-1 cómo el último y volver a 2
  7. Sino, Volver a 3
  8. Si el marcado como último es igual al primero, entonces terminar

En Acción

Como ven a veces escribir un algoritmo es algo confuso, por eso vean el video explico cual es el concepto y funcionamiento detrás del algoritmo con un ejemplo sencillo.

Pasul 3: El Algoritmo En El Circuit Playground

El Código básico

Veamos prima o versiune a algoritmului, fără să aduc nimic de lucruri sau sonor:

byte numbers [9]; // Arreglo que contiene los numeros

int i, j; // Iteradores

// Algoritmo bubbleSort

bucla void () {pentru (i = 0; i <= 9; i ++) {pentru (j = 0; j <= 9 - i; j ++) {if (numere [j] <= numere [j + 1]) {// schimbă poziția de numere float f = numbers [j]; numere [j] = numere [j + 1]; numere [j + 1] = f; }}}}

Como ven primero creamos un arreglo de byte, in this case lo llamamos numbers [9]. Este un registru de 10 numere (de 0 la 9), de numărul tip de byte. Tambi'en creamos dos iteradores i y j. Estos son los que vana recorrer el arreglo.

În el loop principal, vean las line:

for (i = 0; i <= 9; i ++) {for (j = 0; j <= 9 - i; j ++) {}}

Que i recorre tot el arreglo de 0 a 9. Dentro de esta j, noten como va de 0 a 9-i. Es decir, primero va de 0 a 9, apoi de 0 a 9-1, apoi de 0 a 9-2. Esto porque como se ve en el video, por cada iteración sabemos que el ultimo numero ya es el mayor.

Dentro de esos iteradores, se face întrebarea:

if (numere [j] <= numere [j + 1])

Es decir si el siguiente es menor o igual entonces debemos cambiarlo. Pentru a schimba ceea ce face un "swap" este a spune să ia valorile arreglo-ului, să-l păstrez într-o variabilă temporală, să-l atribuie noului valorii, și apoi în temporal la următoarea poziție a arreglo-ului. Vánlo en estas trés lines de cod:

float f = numere [j]; //temporal

numere [j] = numere [j + 1]; numere [j + 1] = f;

Descărcați Circuit Playground

Codul complet în Github, include tot ceea ce este necesar pentru a genera un nou areat aleatoriu cu numere de la 0 la 255, și pentru a folosi numărul cât o cantitate de roșu, pentru a prinde LED-urile. Ustedes lo can modificar for that haga more things as sonidos, etc.

Pasul 4: Funcionando Y Reto

En el video además le agregué sonido, eso se los dejo de reto a ustedes.

Retos

  1. Adăugați sonido
  2. Programează alte algoritmi de ordonare (Sortare rapidă, Sortare Merge)
  3. Medir that tan rapid resuelve e arduino, colocando cada vez more elements in el arreglo y medir cuanto tarda, ¿Es lineal?

Recomandat: