Подскажите как сделать задание, сортировка пузырьком - C (СИ)
Формулировка задачи:
Дана таблица прямого доступа, есть структура Таблицы, которая включает в себя 20 строковых переменных длинной по 100 каждая. Так же дан вектор из ключей (следственно их тоже 20), каждый ключ размера 5 (?!)байт, строковый(?!) тип.
Как мне отсортировать такое? В смысле, вот с обычными размерами типа int или обычный чар - я справлюсь, а вот размера 5 байт - ничего в голову не лезет. Я даже не могу представить как запись делать, не то что сравнение или обмен местами двух ключей.
Помогите, приведите примером кусок кода, где организовывается сравнение и запись таких нестандартных ключей! Благодарю заранее!
Решение задачи: «Подскажите как сделать задание, сортировка пузырьком»
textual
Листинг программы
void memswap(char * a, char * b, size_t cnt) {
char tmp;
while ( cnt-- ) {
tmp = *a;
*a = *b;
*b = tmp;
++a;
++b;
}
}
Объяснение кода листинга программы
- В данном коде представлен функционал для обмена элементов в памяти, он будет использоваться в сортировке пузырьком.
- Функция
memswapпринимает три аргумента: указатели на первые два элемента, которые нужно поменять местами (aиb), и количество элементов, которые нужно поменять местами (cnt). - Внутри функции создается временная переменная
tmp, которая будет использоваться для хранения значений, которые нужно временно сохранить. - Затем в цикле
whileпроисходит обмен элементов до тех пор, пока не будут перебраны все элементы. - В каждой итерации цикла значения
tmpи первого элемента (*a) меняются местами, затем значенияtmpи второго элемента (*b) меняются местами. - После каждой итерации указатели
aиbувеличиваются на 1, чтобы перейти к следующим элементам. - В конце функции указатель
aиbбудут указывать на элементы, которые были переставлены местами. - Для сортировки пузырьком нужно вызывать функцию
memswapдля каждой пары соседних элементов, пока все элементы не будут отсортированы.