Last active
September 1, 2024 14:51
-
-
Save famence/fb0fa3d255bf97c2d06a47af64aa4dd2 to your computer and use it in GitHub Desktop.
Реализация популярных алгоритмов сортировки на JavaScript с комментариями-пояснениями
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Пузырьковая сортировка | |
function bubbleSort(a){ | |
var n = a.length; | |
for (var i = 0; i < n-1; i++){ // Выполняется для каждого элемента массива, кроме последнего. | |
for (var j = 0; j < n-1-i; j++){ // Для всех последующих за текущим элементов | |
if (a[j+1] < a[j]){ // выпоняется проверка, и если следующий элемент меньше текущего | |
var t = a[j+1]; a[j+1] = a[j]; a[j] = t; // то эти элементы меняются местами. | |
} | |
} | |
} | |
return a; | |
}; | |
// Сортировка выбором | |
function selectionSort(a){ | |
var n = a.length; | |
for (var i=0; i<n-1; i++){ // Выполняется для каждого элемента массива, кроме последнего. | |
var min = i; // В качестве текущего минимального устанавливается текущий элемент, | |
for (var j=i+1; j<n; j++){ // а для всех последующих элементов | |
if (a[j] < a[min]) min = j; // выпоняется проверка: если следующий элемент меньше текущего, он устанавливается в качестве минимального значения. | |
var t = a[min]; a[min] = a[i]; a[i] = t; // Минимальный и текущий элементы меняются местами (если текущий = минимальный, то ничего страшного не случится). | |
} | |
} | |
return a; | |
}; | |
// Сортировка вставками | |
function insertionSort(a){ | |
var n = a.length; | |
for (var i=0; i<n; i++){ // Выполняется для каждого элемента массива. | |
var v = a[i], j = i-1; // Определяется значение текущего элемента, а также индекс предыдущего элемента. | |
while(j >= 0 && a[j] > v){ // Пока индекс предыдущего элемента >= 0 и его значение больше значения текущего элемента. | |
a[j+1] = a[j]; // Значением следующего за текущим элемента массива становится значение предыдущего элемента. | |
j--; | |
} | |
a[j+1] = v; // Значением следующего за текущим элемента массива становится значение текущего элемента | |
} | |
return a; | |
}; | |
let array = [85, 92, 12, 11, 0, 85, 1, 1, 20, 77, 01, 10.5, 10.15]; | |
console.log(bubbleSort(array)); | |
console.log(selectionSort(array)); | |
console.log(insertionSort(array)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Спасибо большое)