#define ArrLen(x) (sizeof(x)/sizeof(x[0]))
const char* items[] = {
"18:00 aftensmad",
"09:00 bus",
"20:00 putte",
"14:00 hente 1430",
"08:00 staa op",
"19:00 bad",
};
void swap(int *arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1])
swap(arr, j, j + 1);
}
}
}
void sortItems() {
size_t len = ArrLen(items);
int arr[len][2] = {{0,0}};
int num, index = 0;
for (int i=0; i<len; i++) {
char val[3] = {'\0'};
strncpy(val, items[i], 2);
num = atoi(val);
arr[index][0] = i;
arr[index][1] = num;
index++;
/*
char *s = (char*)items[i]; strtok(s, ":");
num = atoi(s);
arr[index][0] = i;
arr[index][1] = num;
index++;
*/
}
for (int i = 0; i < len-1; i++) {
for (int j = 0; j < len-i - 1; j++) {
if (arr[j][1] > arr[j+1][1]) {
int temp[2] = {0,0};
memcpy(temp, arr[j], sizeof(temp));
memcpy(arr[j], arr[j+1], sizeof(temp));
memcpy(arr[j+1], temp, sizeof(temp));
}
}
}
for (int i=0; i<len; i++)
Serial1.print("arr["), Serial1.print(i), Serial1.print("] = {"),
Serial1.print(arr[i][0]), Serial1.print(","), Serial1.print(arr[i][1]),
Serial1.print("} : "), Serial1.println(items[ arr[i][0] ]);
}
void setup() {
Serial1.begin(115200);
Serial1.println("");
sortItems();
/*
const char* s = "Hello mate";
char *p = (char*)s;
strtok(p, " ");
Serial1.print("p: "); Serial1.println(p);
Serial1.print("s: "); Serial1.println(s);
*/
while (1);
}
void loop() { ; }
/*
#define ARRAY_SIZE 10
int items[ARRAY_SIZE][2];
void setup() {
Serial1.begin(115200);
// Populate array with values and indices
for (int i = 0; i < ARRAY_SIZE; i++) {
items[i][0] = random(0, 100); // Random value
items[i][1] = i; // Original index
}
Serial1.println("Before sorting:");
printArray();
bubbleSort(ARRAY_SIZE);
Serial1.println("\nAfter sorting:");
printArray();
}
void loop() {
// Nothing here
}
void bubbleSort(int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
// Compare values in column 0
if (items[j][0] > items[j + 1][0]) {
// Swap entire rows
int temp0 = items[j][0];
int temp1 = items[j][1];
items[j][0] = items[j + 1][0];
items[j][1] = items[j + 1][1];
items[j + 1][0] = temp0;
items[j + 1][1] = temp1;
}
}
}
}
void printArray() {
for (int i = 0; i < ARRAY_SIZE; i++) {
Serial1.print("items[");
Serial1.print(i);
Serial1.print("]: value=");
Serial1.print(items[i][0]);
Serial1.print(", original_index=");
Serial1.println(items[i][1]);
}
}
*/
/*
void swap(int *arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1])
swap(arr, j, j + 1);
}
}
}
const char* clocks[] = {
"06:00",
"07:00",
"08:00",
"09:00",
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
"16:00",
"17:00",
"18:00",
"19:00",
"20:00",
"21:00",
"22:00",
"23:00",
"00:00",
"01:00",
"02:00",
"03:00",
"04:00",
"05:00",
};
void setup() {
Serial11.begin(115200);
Serial11.println("");
for (int i=0; i<24; i++) {
char *s = (char*)clocks[i];
strtok(s, ":");
int n = atoi(s);
Serial11.print(i); Serial11.print(" ");
Serial11.print(s); Serial11.print(" -> ");
Serial11.println(n);
}
while (1);
int arr[] = {5, 6, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
// Calling bubble sort on array arr
bubbleSort(arr, n);
for (int i = 0; i < n; i++)
Serial11.printf("%d ", arr[i]);
}
void loop() {
delay(1);
}
*/