Упражнения C: сортировка чисел с использованием метода сортировки Bogo
Алгоритм поиска и сортировки при программировании на C: упражнение 14 с решением
Напишите программу на C, которая сортирует числа, используя метод сортировки Bogo.
В информатике Bogo Sort - это особенно неэффективный алгоритм сортировки, основанный на парадигме генерации и тестирования. Алгоритм последовательно генерирует перестановки своего ввода, пока не найдет отсортированный. Это не полезно для сортировки, но может использоваться в образовательных целях, чтобы противопоставить его другим более реалистичным алгоритмам.
Пример решения:
Образец кода C:
// https://bit.ly/2rcvXK5
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool is_sorted(int *a, int n)
{
while ( --n >= 1 ) {
if ( a[n] < a[n-1] ) return false;
}
return true;
}
void shuffle(int *a, int n)
{
int i, t, r;
for(i=0; i < n; i++) {
t = a[i];
r = rand() % n;
a[i] = a[r];
a[r] = t;
}
}
void bogosort(int *a, int n)
{
while ( !is_sorted(a, n) ) shuffle(a, n);
}
int main()
{
int x[] = { 1, 10, 9, 7, 3, 0 };
int i;
int len = sizeof(x)/sizeof(x[0]);
printf("Original Array:\n");
for (i = 0; i < len; i++)
printf("%d%s", x[i], i == len - 1 ? "\n" : " ");
printf("\nSorted Array:\n");
bogosort(x, 6);
for (i=0; i < 6; i++) printf("%d ", x[i]);
printf("\n");
}
Пример вывода:
Оригинальный массив: 1 10 9 7 3 0 Сортированный массив: 0 1 3 7 9 10
Блок - схема:
Редактор кода программирования C:
Улучшите этот пример решения и опубликуйте свой код через Disqus.
Предыдущий: Напишите программу на C, которая сортирует числа, используя метод сортировки по бисеру.
Далее: Напишите программу на C, которая сортирует числа, используя метод Cocktail Sort.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования