Практика 1 - Сортировки массивов - СФ
.pdfПриложение Б
(обязательное)
Быстрая сортировка
using System;
namespace quiq_sort
{
class Program
{
static void sorting(double[] arr, int first, int last)
{
double p = arr[(last - first) / 2 + first]; double temp;
int i = first, j = last; while (i <= j)
{
while (arr[i] < p && i <= last) i++;
while (arr[j] > p && j >= first) j--;
if (i <= j)
{
temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--;
}
}
if (j > first) sorting(arr, first, j); if (i < last) sorting(arr, i, last);
}
static void Main(string[] args)
{
try
{
Console.Write("Введите количество чисел в массиве (Быстрая
сортировка): ");
int n = int.Parse(Console.ReadLine()); Random rand = new Random();
double[] arr = new double[n]; for (int i = 0; i <= n - 1; i++)
{
arr[i] = rand.NextDouble(); arr[i] *= 100;
while (arr[i] / 10 < 1)
{
arr[i] = rand.NextDouble(); arr[i] *= 100;
}
}
Console.WriteLine("Массив: ");
foreach (double d in arr) Console.Write(d + " "); sorting(arr, 0, arr.Length - 1);
Console.WriteLine(); Console.WriteLine("Отсортированный массив: "); foreach (double d in arr) Console.Write(d + " ");
}
catch (System.FormatException)
{
11
Console.WriteLine("Неверно введены данные!!!"); Main(args);
}
catch (System.OverflowException)
{
Console.WriteLine("Число слишком большое или слишком маленькое!!!"); Main(args);
}
}
}
}
12
Приложение В
(обязательное)
Сортировка Шелла
using System;
namespace StructureOfData1
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Введите количество чисел в массиве (Сортировка
Шелла): ");
int n = int.Parse(Console.ReadLine()); Random rand = new Random();
double[] arr = new double[n]; int step = n / 2;
for (int i = 0; i <= n - 1; i++)
{
arr[i] = rand.NextDouble(); arr[i] *= 100;
while (arr[i] / 10 < 1)
{
arr[i] = rand.NextDouble(); arr[i] *= 100;
}
}
Console.WriteLine("Массив: ");
foreach (double d in arr) Console.Write(d + " "); while (step > 0)
{
for (int i = 0; i < n - step; i++)
{
int index = i;
while (index >= 0 && arr[index] > arr[index + step])
{
double tmp = arr[index]; arr[index] = arr[index + step]; arr[index + step] = tmp; index--;
}
}
step /= 2;
}
Console.WriteLine(); Console.WriteLine("Отсортированный массив: "); foreach (double d in arr) Console.Write(d + " ");
}
catch (System.FormatException)
{
Console.WriteLine("Неверно введены данные!!!"); Main(args);
}
catch (System.OverflowException)
{
Console.WriteLine("Число слишком большое или слишком маленькое!!!"); Main(args);
}
13
}
}
}
14
