Skip to content

Instantly share code, notes, and snippets.

@shchegol
Last active June 25, 2020 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shchegol/55d9974803ef85291ff693b3c7d44e6f to your computer and use it in GitHub Desktop.
Save shchegol/55d9974803ef85291ff693b3c7d44e6f to your computer and use it in GitHub Desktop.
Some example of sort
bubble
cocktail
// https://medium.com/@alivander/%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D0%BF%D1%83%D0%B7%D1%8B%D1%80%D1%8C%D0%BA%D0%BE%D0%BC-javascript-54462b2989a6
function bubbleSort(arr) {
for (var i = 0, endI = arr.length - 1; i < endI; i++) {
var wasSwap = false;
for (var j = 0, endJ = endI - i; j < endJ; j++) {
if (arr[j] > arr[j + 1]) {
var swap = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = swap;
wasSwap = true;
}
}
if (!wasSwap) break;
}
return arr;
}
// es6
const bubbleSort = arr => {
for (let i = 0, endI = arr.length - 1; i < endI; i++) {
let wasSwap = false;
for (let j = 0, endJ = endI - i; j < endJ; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
wasSwap = true;
}
}
if (!wasSwap) break;
}
return arr;
};
// https://medium.com/@alivander/%D1%88%D0%B5%D0%B9%D0%BA%D0%B5%D1%80%D0%BD%D0%B0%D1%8F-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-javascript-a2b8af562ee
function swap(arr, i, j) {
var swap = arr[i];
arr[i] = arr[j];
arr[j] = swap;
}
function cocktailSort(arr) {
var left = 0;
var right = arr.length - 1;
while (left < right) {
for (var i = left; i < right; i++) {
if (arr[i] > arr[i + 1]) {
swap(arr, i, i + 1);
}
}
right--;
for (var i = right; i > left; i--) {
if (arr[i] < arr[i - 1]) {
swap(arr, i, i - 1);
}
}
left++;
}
return arr;
}
// es6
const cocktailSort = arr => {
let left = firstSwap = 0;
let right = lastSwap = arr.length - 1;
while (left < right) {
for (let i = left; i < right; i++) {
if (arr[i] > arr[i + 1]) {
[arr[i], arr[i + 1]] = [arr[i + 1], arr[i]]
lastSwap = i;
}
}
right = lastSwap;
for (let i = right; i > left; i--) {
if (arr[i] < arr[i - 1]) {
[arr[i], arr[i - 1]] = [arr[i - 1], arr[i]]
firstSwap = i;
}
}
left = firstSwap;
}
return arr;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment