From 478abbadc93b7a494f7c1f039bee265d372479e0 Mon Sep 17 00:00:00 2001 From: Lars Kotthoff Date: Tue, 11 Dec 2018 10:49:49 -0700 Subject: [PATCH] fix pivot picking and kruskal's algorithm --- src/algorithms/graph/kruskal/kruskal.js | 2 +- src/algorithms/sorting/quick-sort/QuickSort.js | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/algorithms/graph/kruskal/kruskal.js b/src/algorithms/graph/kruskal/kruskal.js index dd9968a0..3c44a2ad 100644 --- a/src/algorithms/graph/kruskal/kruskal.js +++ b/src/algorithms/graph/kruskal/kruskal.js @@ -24,7 +24,7 @@ export default function kruskal(graph) { */ compareCallback: (graphEdgeA, graphEdgeB) => { if (graphEdgeA.weight === graphEdgeB.weight) { - return 1; + return 0; } return graphEdgeA.weight <= graphEdgeB.weight ? -1 : 1; diff --git a/src/algorithms/sorting/quick-sort/QuickSort.js b/src/algorithms/sorting/quick-sort/QuickSort.js index c1d14332..c3c94361 100644 --- a/src/algorithms/sorting/quick-sort/QuickSort.js +++ b/src/algorithms/sorting/quick-sort/QuickSort.js @@ -22,11 +22,15 @@ export default class QuickSort extends Sort { // Take the median element of first, mid, and last elements. let pivotElement = array[0]; const mid = Math.floor(array.length / 2); - if ((array[mid] < array[array.length - 1] && array[mid] > array[0]) - || (array[mid] > array[array.length - 1] && array[mid] < array[0])) { + if ((this.comparator.lessThan(array[mid], array[array.length - 1]) + && this.comparator.greaterThan(array[mid], array[0])) + || (this.comparator.greaterThan(array[mid], array[array.length - 1]) + && this.comparator.lessThan(array[mid], array[0]))) { pivotElement = array[mid]; - } else if ((array[array.length - 1] < array[mid] && array[array.length - 1] > array[0]) - || (array[array.length - 1] > array[mid] && array[array.length - 1] < array[0])) { + } else if ((this.comparator.lessThan(array[array.length - 1], array[mid]) + && this.comparator.greaterThan(array[array.length - 1], array[0])) + || (this.comparator.greaterThan(array[array.length - 1], array[mid]) + && this.comparator.lessThan(array[array.length - 1], array[0]))) { pivotElement = array[array.length - 1]; }