Сортировка выбором имеет квадратичную сложность O(n2) и, как и предыдущий метод пузырька, эффективен лишь на небольших объе- мах данных.
Алгоритм находит номер минимального значения в текущем спи- ске, меняет этот элемент со значением первой неотсортированной по- зиции (если минимальный элемент не находится на данной позиции), а затем сортирует хвост списка, исключив из рассмотрения уже отсор- тированные элементы:
// Сортировка выбором
void SelectionSort(ref int[] Array)
{
// Перебираем все элементы массива (безпоследнего)
// i – позиция первого неотсортированного элемента
for (int i = 0; i < Array.Length – 1; i++)
{
// Позиция минимального элемента справа от i int min = i;
// Перебираем все элементы справа от i
for (int j = i + 1; j < Array.Length; j++)
// Меньше ли очередной элемент минимального? if (Array[j] < Array[min])
// Да – теперь это минимальный элемент
min = j;
// Минимальный элемент не первый?
// Меняем местами! if (min != i)
{
int t = Array[i]; Array[i] = Array[min]; Array[min] = t;
}
}
}
Достарыңызбен бөлісу: |