Сортировка массива C - лучшие алгоритмы и методы
Сортировка массива - это процесс упорядочивания элементов массива в соответствии с заданным критерием. В языке программирования C существует несколько встроенных функций для сортировки массивов.
1. Функция qsort()
Функция qsort() - это стандартная библиотечная функция Си, которая сортирует массив. Она может сортировать массив по любому критерию и может сравнивать элементы любого типа данных.
Синтаксис функции:
c
void qsort(void* base, size_t num, size_t size, int (*comparator)(const void*, const void*));
Где
- base: указатель на массив, который нужно отсортировать.
- num: количество элементов в массиве.
- size: размер каждого элемента массива.
- comparator: указатель на функцию сравнения, которая определяет порядок сортировки.
Например, если мы хотим отсортировать массив целых чисел по возрастанию, мы можем написать код:
c
#include
#include
int compare(const void* a, const void* b)
{
return (*(int*)a - *(int*)b);
}
int main () {
int arr[] = {10, 5, 6, 2, 9};
int n = sizeof(arr)/sizeof(arr[0]);
qsort(arr, n, sizeof(int), compare);
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
В результате выполнения программа выведет: 2 5 6 9 10.
2. Функция bubble_sort()
Bubble Sort (сортировка пузырьком) - это алгоритм сортировки, который проходит по массиву несколько раз и на каждом проходе перемещает наибольший элемент в конец. Вот пример кода на языке программирования C:
c
#include
#include
void bubble_sort(int arr[], int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main () {
int arr[] = {10, 5, 6, 2, 9};
int n = sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr, n);
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
В результате выполнения программа выведет: 2 5 6 9 10.
3. Функция insertion_sort()
Insertion Sort (сортировка вставками) - это алгоритм сортировки, который проходит по массиву и на каждой итерации переставляет элементы таким образом, чтобы они стали по порядку. Вот пример кода на языке программирования C:
c
#include
#include
void insertion_sort(int arr[], int n)
{
int i, j, key;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
int main () {
int arr[] = {10, 5, 6, 2, 9};
int n = sizeof(arr)/sizeof(arr[0]);
insertion_sort(arr, n);
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
В результате выполнения программа выведет: 2 5 6 9 10.
Как видно из примеров, существует множество способов сортировки массива на языке программирования C. Каждый алгоритм имеет свои преимущества и недостатки, а также подходит для определенных типов задач.