#include <Arduino.h>
// Define the pin numbers for the LEDs
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
void setup() {
// Set the pin modes for the LEDs
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
}
Serial.begin(9600); // start the serial communication
delay(1000); // delay so i can open the serial monitor
//waiting for user input to begin
String input = "";
while (input != "") {
input = Serial.readStringUntil('\n');
}
randomSeed(analogRead(0));
int random_numbers[50];
Serial.println("Numbers before sorting:");
for (int i = 0; i < 50; i++) {
random_numbers[i] = random(256);
Serial.print(i+1); // print the number of the random number
Serial.print(") ");
Serial.println(random_numbers[i]); // print the random number
delay(100); // add a delay of 100 milliseconds
}
// Start timer for bubble sort counting in milliseconds
unsigned long start_time = millis();
// bubble sort
for (int i = 0; i < 50; i++) {
for (int j = 0; j < 49; j++) {
if (random_numbers[j] > random_numbers[j+1]) {
int temp = random_numbers[j];
random_numbers[j] = random_numbers[j+1];
random_numbers[j+1] = temp;
}
}
}
// End timer for bubble sort
unsigned long end_time = millis();
int time1 = (end_time - start_time);
// Start timer for insertion sort counting in milliseconds
start_time = millis();
// Insertion sort
for (int i = 1; i < 50; i++) {
int key = random_numbers[i];
int j = i-1;
while (j >= 0 && random_numbers[j] > key) {
random_numbers[j+1] = random_numbers[j];
j = j-1;
}
random_numbers[j+1] = key;
}
// End timer for insertion sort
end_time = millis();
int time2 = (end_time - start_time);
Serial.println("Numbers after sorting:");
for (int i = 0; i < 50; i++) {
Serial.print(i+1); // print the number of the random number
Serial.print(") ");
Serial.println(random_numbers[i]); // print the random number
delay(100); // add a delay of 100 milliseconds
}
Serial.println("End of List \n");
int highest_number = random_numbers[49];
// set highest number to the highest number in list
int lowest_number = random_numbers[0];
// set lowest number to the lowest number in the list
Serial.print("Highest number: ");
Serial.println(highest_number);
/*reads the highest number from the sorted array of random numbers and displays
it in binary on the LEDs connected to the pins defined in the ledPins[] array*/
for (int i = 0; i < 8; i++) {
int bit = bitRead(highest_number, i);
digitalWrite(ledPins[i], bit);
}
delay(3000);
Serial.print("Lowest number: ");
Serial.println(lowest_number);
/*reads the lowest number from the sorted array of random numbers and displays
it in binary on the LEDs connected to the pins defined in the ledPins[] array*/
for (int i = 0; i < 8; i++) {
int bit = bitRead(lowest_number, i);
digitalWrite(ledPins[i], bit);
}
Serial.print("\nBubble Sort Took: ");
Serial.print(time1);
Serial.print(" milliseconds");
Serial.println("\nInsertion Sort Took: ");
Serial.print(time2);
Serial.print(" milliseconds");
}
void loop() {}