Написать программу которая релизует виды сортировки и сравнивает их на одном и том же списке данных - C#
Формулировка задачи:
Помогите написать программу, совершенно не разбираюсь в сортировках
Написать программу которая реализует след. виды сортировок: 1)вставками 2)пузырьком 3) шелла 4)пирамидальный
5) слияния 6) быстрый. Сравнить виды сортировок на одном и том же списке данных (массив рандомных чисел)
какой из них наиболее простой.
Ps. Можно по проще код, что бы в нем можно было разобраться новичку)
Решение задачи: «Написать программу которая релизует виды сортировки и сравнивает их на одном и том же списке данных»
textual
Листинг программы
int[] a = { 1, 5, 3, 6, 2, 4 }; int min = 0; int x; int m = 0; //счётчик проходов //сортировка выбором for (int i = 0; i < a.Length; i++) { // i - номер текущего шага min = i; x = a[i]; for (int j = i + 1; j < a.Length; j++) // цикл выбора наименьшего элемента { if (a[j] < x) { min = j; x = a[j]; // k - индекс наименьшего элемента } m = m + 1; } a[min] = a[i]; a[i] = x; // меняем местами наименьший с a[i] } for (int i = 0; i < a.Length; i++) { Console.Write(a[i] + " "); } Console.WriteLine("Количество проходов сортировкой выбором: " + m); //сортировка пузырьком int[] b = { 1, 5, 3, 6, 2, 4 }; m = 0; for (int i = 0; i < b.Length; i++) { // i - номер прохода for (int j = b.Length - 1; j > i; j--) { // внутренний цикл прохода if (b[j - 1] > b[j]) { x = b[j - 1]; b[j - 1] = b[j]; b[j] = x; } m = m + 1; } } for (int i = 0; i < b.Length; i++) { Console.Write(b[i] + " "); } Console.WriteLine("Количество проходов сортировкой пузырьком: " + m); //сортировка вставками int[] c = { 1, 5, 3, 6, 2, 4 }; m = 0; for (int i = 1; i < c.Length; i++) { x = c[i]; int j = i - 1; while (j >= 0 & c[j] > x) { c[j + 1] = c[j]; j--; m = m + 1; } c[j + 1] = x; } for (int i = 0; i < c.Length; i++) { Console.Write(c[i] + " "); } Console.WriteLine("Количество проходов сортировкой вставками: " + m); //Сортировка Шелла int[] arr = { 1, 5, 3, 6, 2, 4 }; int step = arr.Length / 2; m = 0; while (step > 0) { for (int i = 0; i < (arr.Length - step); i++) { int j = i; while ((j >= 0) && (arr[j] > arr[j + step])) { int tmp = arr[j]; arr[j] = arr[j + step]; arr[j + step] = tmp; j--; m = m + 1; } } step = step / 2; } for (int i = 0; i < c.Length; i++) { Console.Write(arr[i] + " "); } Console.WriteLine("Количество проходов сортировкой Шелла: " + m); Console.ReadLine();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д