Cov txheej txheem:

Cov Khoom Siv Ciencia Y Arte: Ordenando Listas (Npuas Hom): 4 Cov Kauj Ruam
Cov Khoom Siv Ciencia Y Arte: Ordenando Listas (Npuas Hom): 4 Cov Kauj Ruam

Video: Cov Khoom Siv Ciencia Y Arte: Ordenando Listas (Npuas Hom): 4 Cov Kauj Ruam

Video: Cov Khoom Siv Ciencia Y Arte: Ordenando Listas (Npuas Hom): 4 Cov Kauj Ruam
Video: Наука о данных с Python! Анализ типов файлов от Avro до Stata 2024, Kaum ib hlis
Anonim
Cov Khoom Siv Ciencia Y Arte: Ordenando Listas (Npuas Hom)
Cov Khoom Siv Ciencia Y Arte: Ordenando Listas (Npuas Hom)

En el mundo de las ciencias de la computación, saber ordenar listas es como saber escribir. Es una buena manera de ver como los algoritmos tus tub 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 que es el "Bubble Sort", y explicaré con detalle en que consiste

Este Instructable, txiav txim siab que es AVANZADO, pero no hay nada como los retos difíciles, así que si no eres experto o experta no importa, haz el intento igual …

Kauj Ruam 1: ¿Ordenar Listas?

Puas yog Ordenar Listas?
Puas yog Ordenar Listas?

Hoy en día usamos la computadora en todas las cosas. Los teléfonos hoy en día son prácticamente super computadoras. Mientras las computadoras toman datos, se construyen listas de datos. Una lista de datos es un conjunto de datos como yog:

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

Es una lista de nombres. Ahora bien, en muchas ocasiones, necesitamos ordenarlos, es decir acomodar la lista en un orden particular, por ejemplo de mayor a menor o viceversa, o en orden alfabético.

Puas yog Porqué ordenarlos? Veamos el ejemplo de la lista de nombres de la imagen. Es una lista larga, si les pido busquen el nombre IRENE, enlual lista es más fácil? nyob rau hauv ¿ordenada verdad? bueno por eso mismo ordenar listas de datos es algo extremadamente importante en una computadora, pera luego poder usar los datos de forma efectiva.

¿Cómo los ordeno? pasemos al siguiente paso

Kauj Ruam 2: Algoritmo "Bubble Sort" Ordenamiento De Burbuja

Image
Image

Si tengo una lista de números, o nombres, ¿Cómo las puedo ordenar? Tseem muaj muchas maneras de hacerlo, acá les voy a explicar la que se llama "Bubble Sort", tsis muaj es de las más rápidas, de hecho puede que hiav txwv de las peores, pero si es un buen ejemplo de como una idea se escribe como un algoritmo, y luego se escribe como un programa de computadora. Además, creo que ve super bonito en el Circuit chaw ua si.

La Tswv Yim

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 zoo ib yam li tener una caja de piedras de diferentes tamaños, si las sacudo por suficiente tiempo, las más pesadas se van al fondo y las livianas se quedan arriba.

Ntsib neeg Algoritmo

Los pasos del algoritmos tus tub:

  1. Tenemos una lista de 1 a n elementos
  2. Comenzar por el 1
  3. Preguntar si el número en la posición tus kav nroog tiag que el de la posición siguiente
  4. Si es mayor cambiarlos, sino, dejarlos igual
  5. Mover ib qho posición
  6. Si es el n, entonces marcar n-1 cómo el último y volver a 2
  7. Sino, Volver ib 3
  8. Si el marcado como último es igual al primero, entonces terminar

Hauv 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.

Kauj Ruam 3: El Algoritmo En El Circuit Chaw Ua Si

Ntsib cov neeg El Código

Veamos primero una versión del algoritmo, ua txhaum kev pom zoo nada de luces o sonido:

byte tus lej [9]; // Arreglo que contiene los lejeros

int kuv, j; // Iteradores

// Algoritmo bubbleSort

void loop () {rau (i = 0; i <= 9; i ++) {rau (j = 0; j <= 9 - i; j ++) {yog (lej [j] <= lej [j+1]) {// cambia posición de números ntab f = lej [j]; zauv [j] = zauv [j + 1]; zauv [j + 1] = f; }}}}

Como ven primero creamos un arreglo de byte, en este caso lo llamamos tus lej [9]. Es un arreglo de 10 números (de 0 a 9), de tus lej lej tipo byte. Tambi'en creamos dos iteradores i y j. Estos tus tub los que vana recorrer el arreglo.

En el loop tus thawj xibfwb, vean las línea:

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

Que i recorre todo 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, luego de 0 a 9-1, luego 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, yog li no pregunta:

yog tias (tus lej [j] <= tus lej [j + 1])

Es decir si el siguiente es menor o igual entonces debemos cambiarlo. Para cambiarlo hay que hacer un "swap" es decir tomar el valor del arreglo, guardarlo en una variable temporal, asignárle el nuevo valor, y luego en temporal al la siguiente posición del arreglo. Lub tsev kawm ntawv qib siab lossis tsev kawm qib siab:

ntab f = lej [j]; // lub sijhawm

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

Rub tawm El Circuit Playground

El código completo en Github, suav nrog todo lo necesario para generar un nuevo arreglo aleatorio con números de 0 a 255, y para usar el numero como cantidad de rojo, para prender los LEDs. Ustedes lo pueden modificar para que haga más cosas como sonidos, thiab lwm yam.

Kauj ruam 4: Funcionando Y Reto

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

Retos

  1. Agregar sonido
  2. Programar otros algoritmos de ordenamiento (Sort Quick, Merge Sort)
  3. Medir que tan rápido resuelve e arduino, colocando cada vez más elementos en el arreglo y medir cuanto tarda, Es lineal?

Pom zoo: