mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-11-10 11:09:43 +08:00
Compare commits
4 Commits
3072a111d2
...
d01c4ed12d
Author | SHA1 | Date | |
---|---|---|---|
|
d01c4ed12d | ||
|
c5016a0229 | ||
|
a2514b9e7f | ||
|
822d4e3ac7 |
@ -6,7 +6,7 @@ export default class InsertionSort extends Sort {
|
||||
|
||||
// Go through all array elements...
|
||||
for (let i = 1; i < array.length; i += 1) {
|
||||
let currentIndex = i;
|
||||
let j = i;
|
||||
|
||||
// Call visiting callback.
|
||||
this.callbacks.visitingCallback(array[i]);
|
||||
@ -14,23 +14,17 @@ export default class InsertionSort extends Sort {
|
||||
// Check if previous element is greater than current element.
|
||||
// If so, swap the two elements.
|
||||
while (
|
||||
array[currentIndex - 1] !== undefined
|
||||
&& this.comparator.lessThan(array[currentIndex], array[currentIndex - 1])
|
||||
array[j - 1] !== undefined
|
||||
&& this.comparator.lessThan(array[j], array[j - 1])
|
||||
) {
|
||||
// Call visiting callback.
|
||||
this.callbacks.visitingCallback(array[currentIndex - 1]);
|
||||
this.callbacks.visitingCallback(array[j - 1]);
|
||||
|
||||
// Swap the elements.
|
||||
[
|
||||
array[currentIndex - 1],
|
||||
array[currentIndex],
|
||||
] = [
|
||||
array[currentIndex],
|
||||
array[currentIndex - 1],
|
||||
];
|
||||
[array[j - 1], array[j]] = [array[j], array[j - 1]];
|
||||
|
||||
// Shift current index left.
|
||||
currentIndex -= 1;
|
||||
j -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,9 +39,7 @@ export default class QuickSortInPlace extends Sort {
|
||||
* @param {number} rightIndex
|
||||
*/
|
||||
const swap = (leftIndex, rightIndex) => {
|
||||
const temp = array[leftIndex];
|
||||
array[leftIndex] = array[rightIndex];
|
||||
array[rightIndex] = temp;
|
||||
[array[leftIndex], array[rightIndex]] = [array[rightIndex], array[leftIndex]];
|
||||
};
|
||||
|
||||
const pivot = array[highIndex];
|
||||
|
@ -12,22 +12,20 @@ export default class ShellSort extends Sort {
|
||||
while (gap > 0) {
|
||||
// Go and compare all distant element pairs.
|
||||
for (let i = 0; i < (array.length - gap); i += 1) {
|
||||
let currentIndex = i;
|
||||
let j = i;
|
||||
let gapShiftedIndex = i + gap;
|
||||
|
||||
while (currentIndex >= 0) {
|
||||
while (j >= 0) {
|
||||
// Call visiting callback.
|
||||
this.callbacks.visitingCallback(array[currentIndex]);
|
||||
this.callbacks.visitingCallback(array[j]);
|
||||
|
||||
// Compare and swap array elements if needed.
|
||||
if (this.comparator.lessThan(array[gapShiftedIndex], array[currentIndex])) {
|
||||
const tmp = array[currentIndex];
|
||||
array[currentIndex] = array[gapShiftedIndex];
|
||||
array[gapShiftedIndex] = tmp;
|
||||
if (this.comparator.lessThan(array[gapShiftedIndex], array[j])) {
|
||||
[array[j], array[gapShiftedIndex]] = [array[gapShiftedIndex], array[j]];
|
||||
}
|
||||
|
||||
gapShiftedIndex = currentIndex;
|
||||
currentIndex -= gap;
|
||||
gapShiftedIndex = j;
|
||||
j -= gap;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -95,9 +95,8 @@ export default class Heap {
|
||||
* @param {number} indexTwo
|
||||
*/
|
||||
swap(indexOne, indexTwo) {
|
||||
const tmp = this.heapContainer[indexTwo];
|
||||
this.heapContainer[indexTwo] = this.heapContainer[indexOne];
|
||||
this.heapContainer[indexOne] = tmp;
|
||||
[this.heapContainer[indexOne], this.heapContainer[indexTwo]] = [
|
||||
this.heapContainer[indexTwo], this.heapContainer[indexOne]];
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user