Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Блок 1 Программирование.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
295.81 Кб
Скачать
  1. Методы сортировки. Примеры алгоритмов.

Сортир – это упоряд-ие элем в структуре данных по возраст(убыван)для числ значений, либо по алфавиту- для строковых знач. Сортировка массива методом пузырька - медленная, но если скорость не главное, можно применить и его. Алгоритм - если два соседних элемента расположены не по порядку, то меняем их местами. Так повторяем до тех пор, пока в очередном проходе не сделаем ни одного обмена, т.е. массив будет упорядоченным.

static void Main()

{int[] arr = {35, 698, 74, 81, 67, 11, 184, 89};

// {int[] arr = {11, 698, 74, 81, 67, 35, 184, 89}; после первого прохода

// {int[] arr = {11, 35, 698, 81, 74, 67, 184, 89}; после второго прохода

for (int j = 0; j < 8; j++)

{ for (int i = j; i < 8; i++)

{ if (arr[j] > arr[i])

{ int x = arr[j];

arr[j] = arr[i];

arr[i] = x; } } }

Console.WriteLine("Cортированый масив");

for (int i = 1; i < 7; i++)

{ Console.WriteLine(arr[i]); }}   

Сортировка методом нахождения минимального элемента более быстрый, чем метод пузырька.

Заключается он в следующем: при каждом просмотре массива находим мин эл и меняем местами его с первым на первом проходе, со вторым - на втором и т.д. Не забудьте только, что первый элемент массива должен иметь индекс 0.

int[] arr = { 35, 698, 74, 81, 67, 11, 184, 89 };

int min, pos, temp,n;

for (int i = 0; i <= n-1; i++)

{ min = arr[i];

pos = i;

for (int j = i + 1; j < n; j++)

{ if (arr[j] < min)

{ min = arr[j];

pos = j; }

temp = arr[i];

arr[i] = arr[pos];

arr[pos] = temp; } }

Сортировка вставками. Более быстрый и оптимальный метод. Идея заключается в следующем, мы шаг за шагом идем по массиву и каждый элемент последовательно вставляем по убыванию или возрастанию в нужную нам позицию. Соответственно, что бы упорядочить N элементов мы должны будем сделать ровно N шагов.

static void Main()

{ int[] x = { 35, 698, 74, 81, 67, 11, 184, 89 };

int temp, j;

for (int i = 1; i < 8; i++) {

temp = x[i];

for (j = i; j > 0 && x[j-1] > temp; j--)

{x[j] = x[j-1]; }

x[j] = temp; }

Console.WriteLine("Cортированый масив");

for (int i = 1; i < 7; i++)

{ Console.WriteLine(x[i]); }}

Сортировка выбором. На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированном списке, до тех пор пока набор входных данных не будет исчерпан. Метод выбора очередного элемента из исходного массива произволен; может использоваться практически любой алгоритм выбора. Обычно (и с целью получения устойчивого алгоритма сортировки), элементы вставляются по порядку их появления во входном массиве.

static void Main()

{ int[] x = { 35, 698, 74, 81, 67, 11, 184, 89 };

int t; /* Главный цикл до n-1, а не n, т.к. последний остающийся элемент - максимальный */

for (int i = 0; i < 8 - 1; i++)

{ int k = i; t = x[i];

for (int j = i; j < 8; j++)

{ if (x[j] < t)

{ k = j; t = x[j];} }

x[k] = x[i]; x[i] = t; }

Console.WriteLine("Cортированый масив");

for (int i = 1; i < 7; i++)

{ Console.WriteLine(x[i]); } }