Skip to content

Commit 99bef39

Browse files
authored
Merge pull request trekhleb#10 from albertstill/improve-bubble-sort
stop bubble sort revisiting already sorted elements
2 parents 35fff1f + f34fd84 commit 99bef39

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

src/algorithms/sorting/bubble-sort/BubbleSort.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ export default class BubbleSort extends Sort {
77
// Clone original array to prevent its modification.
88
const array = [...originalArray];
99

10-
for (let i = 0; i < array.length; i += 1) {
10+
for (let i = 1; i < array.length; i += 1) {
1111
swapped = false;
1212

1313
// Call visiting callback.
1414
this.callbacks.visitingCallback(array[i]);
1515

16-
for (let j = 0; j < array.length - 1; j += 1) {
16+
for (let j = 0; j < array.length - i; j += 1) {
1717
// Call visiting callback.
1818
this.callbacks.visitingCallback(array[j]);
1919

src/algorithms/sorting/bubble-sort/__test__/BubbleSort.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import {
99

1010
// Complexity constants.
1111
const SORTED_ARRAY_VISITING_COUNT = 20;
12-
const NOT_SORTED_ARRAY_VISITING_COUNT = 280;
13-
const REVERSE_SORTED_ARRAY_VISITING_COUNT = 400;
12+
const NOT_SORTED_ARRAY_VISITING_COUNT = 189;
13+
const REVERSE_SORTED_ARRAY_VISITING_COUNT = 209;
1414
const EQUAL_ARRAY_VISITING_COUNT = 20;
1515

1616
describe('BubbleSort', () => {

0 commit comments

Comments
 (0)