Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практика 1 - Сортировки массивов - СФ

.pdf
Скачиваний:
14
Добавлен:
06.11.2022
Размер:
377.25 Кб
Скачать

Приложение Б

(обязательное)

Быстрая сортировка

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