Code Duplication    Length = 36-40 lines in 2 locations

src/components/algorithms.js 2 locations

@@ 35-74 (lines=40) @@
32
  return state
33
}
34
35
export function insertionSort (arr) {
36
  let state = []
37
38
  state.push({
39
    numbers: arr.slice(),
40
    active: [0, 0]
41
  })
42
43
  for (let i = 1; i < arr.length; i++) {
44
    let k = arr[i]
45
46
    let j = i - 1
47
48
    while (j >= 0 && arr[j] > k) {
49
      state.push({
50
        numbers: arr.slice(),
51
        active: [j, k]
52
      })
53
54
      arr[j + 1] = arr[j]
55
      j = j - 1
56
    }
57
    arr[j + 1] = k
58
  }
59
60
  for (let i = 0; i < arr.length; i++) {
61
    state.push({
62
      numbers: arr.slice(),
63
      active: [...Array(i).keys(), i]
64
    })
65
  }
66
  state.push({
67
    numbers: arr.slice(),
68
    active: [...Array(arr.length).keys()]
69
  })
70
71
  return state
72
}
73
74
export function quickSort (arr, less = (a, b) => a < b) {
75
  let state = []
76
77
  function swap (i, j) {
@@ 1-36 (lines=36) @@
1
export function bubbleSort (arr) {
2
  let state = []
3
4
  state.push({
5
    numbers: arr.slice(),
6
    active: [0, 0]
7
  })
8
9
  for (let i = 0; i < arr.length; i++) {
10
    for (let j = i + 1; j < arr.length; j++) {
11
      state.push({
12
        numbers: arr.slice(),
13
        active: [i, j]
14
      })
15
16
      if (arr[i] > arr[j]) {
17
        let temp = arr[i]
18
19
        arr[i] = arr[j]
20
        arr[j] = temp
21
      }
22
    }
23
  }
24
25
  for (let i = 0; i < arr.length; i++) {
26
    state.push({
27
      numbers: arr.slice(),
28
      active: [...Array(i).keys()]
29
    })
30
  }
31
32
  return state
33
}
34
35
export function insertionSort (arr) {
36
  let state = []
37
38
  state.push({
39
    numbers: arr.slice(),