Сортировка выбором: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
 
Строка 36: Строка 36:




[[Java]]
===  [[Java]] ===


<source lang="java" line="1">
<source lang="java" line="1">
Строка 55: Строка 55:


</source>
</source>
[[Ruby]]<syntaxhighlight lang="ruby" line="1" start="1">
 
=== [[Ruby]] ===
 
 
<syntaxhighlight lang="ruby" line="1" start="1">
def selection_sort(array)
def selection_sort(array)
for min in 0..array.count-2
for min in 0..array.count-2
Строка 70: Строка 74:
end
end
</syntaxhighlight>
</syntaxhighlight>
[[Swift (язык программирования)|Swift]]<syntaxhighlight lang="swift" line="1" start="1">
=== [[Swift]] ===
 
<syntaxhighlight lang="swift" line="1" start="1">
func selectionSort<Element>(_ array: inout Array<Element>) where Element: Comparable {
func selectionSort<Element>(_ array: inout Array<Element>) where Element: Comparable {
for min in 0..<array.count - 1 {
for min in 0..<array.count - 1 {
Строка 83: Строка 89:
}
}
</syntaxhighlight>
</syntaxhighlight>
[[PascalABC.NET]]<syntaxhighlight lang=pascal line="1">
begin
  var a := ArrRandom;
  a.Println;


  for var i:=0 to a.High do
    Swap(a[i],a[i+a[i:].IndexMin]);
  a.Println;
end
</syntaxhighlight>


[[Python]]
=== [[Python]] ===
<source lang="python" line="1">
<source lang="python" line="1">
def select_sort(A):
def select_sort(A):
Строка 104: Строка 100:
</source>
</source>


[[Go]]<syntaxhighlight lang="go" line="1">
=== [[Go]] ===
<syntaxhighlight lang="go" line="1">
func selectionSort(nums []int) {
func selectionSort(nums []int) {
     n := len(nums)
     n := len(nums)

Текущая версия от 23:19, 15 декабря 2022

Описание Сортировка выбором (Selection sort) — алгоритм сортировки.
Область знаний Информатика
Область использования (ISTE)
Возрастная категория


Поясняющее видео
Близкие рецепту понятия
Среды и средства для приготовления рецепта:

Сортировка выбором (Selection sort) — алгоритм сортировки. Может быть как устойчивый, так и неустойчивый.

Шаги алгоритма:

  1. находим номер минимального значения в текущем списке
  2. производим обмен этого значения со значением первой неотсортированной позиции (обмен не нужен, если минимальный элемент уже находится на данной позиции)
  3. теперь сортируем хвост списка, исключив из рассмотрения уже отсортированные элементы


template <typename type_arr>
void selection_sort(type_arr *arr, int size)
{
    for (int i = 0; i < size - 1; i++)
    {
        int min_index = i;
        for (int j = i + 1; j < size; j++)
        {
            if (arr[j] < arr[min_index])
            {
                min_index = j;
            }
        }
        if (min_index != i)
        {
            swap(arr[i], arr[min_index]);
        }
    }
}


public static <T extends Comparable<? super T>>
void sort(T[] array) {
        for (int i = 0; i < array.length - 1; ++i) {
            int minPos = i;
            for (int j = i + 1; j < array.length; ++j) {
                if (array[j].compareTo(array[minPos]) < 0) {
                    minPos = j;
                }
            }
            T saveValue = array[minPos];
            array[minPos] = array[i];
            array[i] = saveValue;
        }
    }
def selection_sort(array)
	for min in 0..array.count-2
		least = min
		for j in (min + 1)..array.count-1
			if array[j] < array[least]
				least = j
			end
		end
		temp = array[min]
		array[min] = array[least]
		array[least] = temp
	end
end
func selectionSort<Element>(_ array: inout Array<Element>) where Element: Comparable {
	for min in 0..<array.count - 1 {
		for j in min..<array.count {
			if array[j] < array[min] {
				let temp = array[min]
				array[min] = array[j]
				array[j] = temp
			}
		}
	}
}


def select_sort(A):
    for i in range(len(A)-1):
        for k in range(i+1, len(A)):
            if A[k] < A[i]:
                A[k], A[i] = A[i], A[k]
func selectionSort(nums []int) {
    n := len(nums)

    for i := 0; i < n; i++ {
        min := i 
        for j := i + 1; j < n; j++ {
            if nums[j] < nums[min] {
                min = j
            }
        }
        nums[i], nums[min] = nums[min], nums[i]
    }
}