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

Материал из Поле цифровой дидактики
Новая страница: «{{Scripting Tutorials |Description='''Сортировка выбором''' (''Selection sort'') — алгоритм сортировки. |Field_of_knowledge=Информатика }} '''Сортировка выбором''' (''Selection sort'') — алгоритм сортировки. Может быть как устойчивый, так и неустойчивый. Шаги алгоритма: # находим номер минималь...»
 
 
(не показана 1 промежуточная версия этого же участника)
Строка 33: Строка 33:
}
}
</source>
</source>
===  [[Java]] ===
<source lang="java" line="1">
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;
        }
    }
</source>
=== [[Ruby]] ===
<syntaxhighlight lang="ruby" line="1" start="1">
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
</syntaxhighlight>
=== [[Swift]] ===
<syntaxhighlight lang="swift" line="1" start="1">
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
}
}
}
}
</syntaxhighlight>
=== [[Python]] ===
<source lang="python" line="1">
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]
</source>
=== [[Go]] ===
<syntaxhighlight lang="go" line="1">
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]
    }
}
</syntaxhighlight>

Текущая версия от 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]
    }
}