Написать программу которая релизует виды сортировки и сравнивает их на одном и том же списке данных - 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();