Сортировка букв в алфавитном порядке - C (СИ)
Формулировка задачи:
сортировка латинских букв в строке в алфавитном порядке. В программе должен быть реализован алгоритм сортировки распределением.
Вход: elephant
Вывод: aeehlnpt
Строка содержит только маленькие латинские буквы.
Решение задачи: «Сортировка букв в алфавитном порядке»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int charcmp(const void *a, const void *b) {
return (*((char*)a) > *((char*)b));
}
int main() {
char s[] = "elephant";
qsort(s, strlen(s), sizeof(*s), charcmp);
puts(s);
}
Объяснение кода листинга программы
В данном коде реализуется сортировка строки elephant в алфавитном порядке с использованием функции qsort() из библиотеки
- Создаётся статическая функция charcmp(), которая принимает два указателя на символы (представляемые как void*), и возвращает отрицательное значение, если первый символ меньше второго, положительное значение, если первый символ больше второго, и 0, если символы равны. Это нужно для корректной работы функции qsort().
- В функции main() создаётся массив символов
elephantс помощью строки s[] и выводится на экран с помощью функции puts(). - Затем вызывается функция qsort(), которая сортирует массив символов s[] в порядке возрастания. В качестве аргументов функции qsort() передаются: начальный индекс массива (s), длина массива (strlen(s)), размер одного элемента массива (sizeof(*s)), и функция сравнения charcmp().
- После сортировки массив символов выводится на экран с помощью функции puts().