В этой небольшой статье расскажем об одной из разновидностей сортировок — о глупой сортировке. Будет приведено описание алгоритма сортировки, его реализация на языке программирования C# и пример с исходником консольной программы, использующей глупую сортировку.
Глупая сортировка (англ. Stupid sort) — один из самых простейших для понимания и реализации алгоритмов сортировки данных. Он в некоторой степени похож на сортировку пузырьком.
Глупая сортировка — очень неэффективный алгоритм. Его целесообразно использовать только для небольших массивов данных. Сложность алгоритма составляет: O(n3).
Приведем описание алгоритма (выполним сортировку по возрастанию).
Сортировка производится от начала массива. Текущий элемент сравнивается со следующим, ЕСЛИ следующий меньше, ТО эти элементы меняются местами и возвращаемся в начало массива.
Сортировка закончена, когда будет пройден весь массив до конца, и не будет сделано ни одной перестановки элементов.
Приведем реализацию алгоритма Глупая сортировка на языке программирования C#.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void stupidSort(int[] arr) { int i = 0, tmp; while (i < arr.Length - 1) { if (arr[i + 1] < arr[i]) { tmp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = tmp; i = 0; } else i++; } } |
Теперь приведем пример консольной программы, реализующей алгоритм Глупая сортировка. Программа генерирует массив из десяти целых чисел в полуинтервале [0; 10), затем выводит их на экран, после этого выполняется сортировка исходной последовательности данных с помощью алгоритма Глупая сортировка, и отсортированный массив выводится в консоль.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StupidSort { class Program { static void Main(string[] args) { int[] array = new int[10]; Random rand = new Random(); for (int i = 0; i < array.Length; i++) array[i] = rand.Next(0, 10); Console.WriteLine("Исходная последовательность:"); for (int i = 0; i < array.Length; i++) Console.Write(array[i] + " "); stupidSort(array); Console.WriteLine("\nОтсортированная последовательность:"); for (int i = 0; i < array.Length; i++) Console.Write(array[i] + " "); Console.ReadLine(); } static void stupidSort(int[] arr) { int i = 0, tmp; while (i < arr.Length - 1) { if (arr[i + 1] < arr[i]) { tmp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = tmp; i = 0; } else i++; } } } } |
Демонстрация работы программы представлена на скриншоте:
Если вы хотите скачать исходник этой программы, написанной в Visual Studio на языке программирования C#, то нажмите на кнопку ниже.
Скачать исходник
Поделиться в соц. сетях: