Skip to content

luisllamasbinaburo/Arduino-QuickSort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Librería Arduino QuickSort

Librería para Arduino que aplica el algoritmo QuickSort para ordenar un array en Arduino.
Más información https://www.luisllamas.es/libreria-arduino-quicksort/

Instrucciones de uso

La librería dispone de dos métodos estáticos para la ordenación de vectores. No es necesario, por tanto, instanciar un objeto.

La librería incorpora dos métodos estáticos para el calculo de QuickSort ascendente y descendente. Se usan templates para que funcionen con distintos tipos de variables (int, long, float…). La librería incorpora dos ejemplos, uno para int y otro para float.

Para la ordenación en sentido ascendente usaríamos el método SortAscending.

QuickSort::SortAscending(items, initItem, numItems);

Mientras que para la ordenación en sentido descendente usaríamos el método SortDescending.

QuickSort::SortDescending(items, initItem, numItems);

Ejemplos

La librería QuickSort incluye los siguientes ejemplos para ilustrar su uso.

  • QuickSortInt: Ejemplo de uso para variables integer.
#include "QuickSortLib.h"

int values100[] = { 3, 53, 70, 56, 18, 85, 27, 14, 37, 94, 9, 55, 40, 60, 52, 61, 15, 65, 13, 8, 57, 97, 69, 4, 35, 82, 22, 73, 59, 68, 78, 24, 21, 36, 71, 80, 74, 39, 17, 12, 29, 76, 49, 51, 30, 90, 88, 2, 84, 50, 62, 28, 77, 43, 5, 16, 58, 26, 32, 34, 1, 75, 66, 95, 38, 89, 67, 87, 100, 54, 92, 81, 25, 83, 46, 33, 23, 45, 96, 99, 79, 48, 11, 31, 7, 6, 19, 91, 93, 44, 47, 98, 86, 41, 63, 20, 72, 10, 42, 64 };
size_t values100Length = sizeof(values100) / sizeof(values100[0]);

void printArray(int* x, size_t length)
{
	for (size_t iCount = 0; iCount < length; iCount++)
	{
		Serial.print(x[iCount]);
		Serial.print(',');
	}
}

void setup()
{
	Serial.begin(115200);

	Serial.println("Ordenando 100 integers");
	unsigned long timeCount = micros();
	QuickSort::SortAscending(values100, 0, values100Length - 1);
	timeCount = micros() - timeCount;
	printArray(values100, values100Length);
	Serial.println();
	Serial.print(timeCount);
	Serial.println("us");
}


void loop()
{
}
  • QuickSortFloat: Ejemplo de uso para variables float.
#include "QuickSortLib.h"

float values100[] = { 3.0, 53.0, 70.0, 56.0, 18.0, 85.0, 27.0, 14.0, 37.0, 94.0, 9.0, 55.0, 40.0, 60.0, 52.0, 61.0, 15.0, 65.0, 13.0, 8.0, 57.0, 97.0, 69.0, 4.0, 35.0, 82.0, 22.0, 73.0, 59.0, 68.0, 78.0, 24.0, 21.0, 36.0, 71.0, 80.0, 74.0, 39.0, 17.0, 12.0, 29.0, 76.0, 49.0, 51.0, 30.0, 90.0, 88.0, 2.0, 84.0, 50.0, 62.0, 28.0, 77.0, 43.0, 5.0, 16.0, 58.0, 26.0, 32.0, 34.0, 1.0, 75.0, 66.0, 95.0, 38.0, 89.0, 67.0, 87.0, 100.0, 54.0, 92.0, 81.0, 25.0, 83.0, 46.0, 33.0, 23.0, 45.0, 96.0, 99.0, 79.0, 48.0, 11.0, 31.0, 7.0, 6.0, 19.0, 91.0, 93.0, 44.0, 47.0, 98.0, 86.0, 41.0, 63.0, 20.0, 72.0, 10.0, 42.0, 64.0 };
size_t values100Length = sizeof(values100) / sizeof(values100[0]);

void printArray(float* x, size_t length)
{
	for (size_t iCount = 0; iCount < length; iCount++)
	{
		Serial.print(x[iCount]);
		Serial.print(',');
	}
}

void setup()
{
	Serial.begin(115200);

	Serial.println("Ordenando 100 integers");
	unsigned long timeCount = micros();
	QuickSort::SortAscending(values100, 0, values100Length - 1);
	timeCount = micros() - timeCount;
	printArray(values100, values100Length);
	Serial.println();
	Serial.print(timeCount);
	Serial.println("us");
}


void loop()
{
}