Skip to content

Instantly share code, notes, and snippets.

@famence
Last active June 4, 2024 18:07
Show Gist options
  • Save famence/fb0fa3d255bf97c2d06a47af64aa4dd2 to your computer and use it in GitHub Desktop.
Save famence/fb0fa3d255bf97c2d06a47af64aa4dd2 to your computer and use it in GitHub Desktop.
Реализация популярных алгоритмов сортировки на JavaScript с комментариями-пояснениями
// Пузырьковая сортировка
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));
Copy link

ghost commented Sep 10, 2019

Спасибо большое)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment