Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 03b27b4

Browse files
correct quick sort
1 parent c6602ec commit 03b27b4

File tree

3 files changed

+31
-28
lines changed

3 files changed

+31
-28
lines changed

‎README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,20 @@ Feel free to navigate around.
4343

4444
#### Data Structures
4545

46+
[Binary Search Tree](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/data-structures/binary-search-tree.js)
47+
4648
[Linked list](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/data-structures/linked-list.js)
4749

4850
[Queue](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/data-structures/queue.js)
4951

5052
[Stack](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/data-structures/stack.js)
5153

52-
[Binary Search Tree](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/data-structures/binary-search-tree.js)
53-
5454
#### Sorting
5555

5656
[Bubble sort](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/sorting/bubble-sort.js)
5757

58+
[Bucket sort](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/sorting/bucket-sort.js)
59+
5860
[Counting sort](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/sorting/counting-sort.js)
5961

6062
[Heap sort](https://github.com/estevanmaito/algorithms-in-javascript/tree/master/sorting/heap-sort.js)

‎sorting/insertion-sort.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
// https://en.wikipedia.org/wiki/Insertion_sort
22

3-
let insertionSort = (array) => {
3+
let insertionSort = (arr) => {
44
let u, // unsorted
55
s, // sorted
66
value
77

8-
for (u = 1; u < array.length; u++) {
9-
value = array[u]
8+
for (u = 1; u < arr.length; u++) {
9+
value = arr[u]
1010

11-
for (s = u - 1; s >= 0 && array[s] > value; s--) {
12-
array[s + 1] = array[s]
11+
for (s = u - 1; s >= 0 && arr[s] > value; s--) {
12+
arr[s + 1] = arr[s]
1313
}
1414

15-
array[s + 1] = value
15+
arr[s + 1] = value
1616
}
17-
return array
17+
return arr
1818
}
1919

2020
module.exports = insertionSort

‎sorting/quick-sort.js

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,42 @@ let swap = (arr, orig, dest) => {
66
arr[dest] = temp
77
}
88

9-
let partition = (arr) => {
10-
let pivot = arr[arr.length-1],
11-
i = -1
9+
let partition = (arr,start,end) => {
10+
let pivot = arr[end],
11+
i = start-1
1212

13-
for (let j = 0; j >arr.length-2; j++) {
13+
for (let j = start; j <end; j++) {
1414
if (arr[j] <= pivot) {
1515
i++
16-
swap(arr, arr[i],arr[j])
16+
swap(arr, i,j)
1717
}
1818
}
19-
swap(arr, arr[i + 1],arr[arr.length-1])
20-
return arr
19+
swap(arr, i + 1,end)
20+
return i+1
2121
}
2222

23-
let quickSort = (arr) => {
24-
if (arr.length>1) {
25-
let middle = partition(arr)
26-
quickSort(arr.slice(0,middle))
27-
quickSort(arr.slice(middle))
23+
let quickSort = (arr,start,end) => {
24+
if (start<end) {
25+
let middle = partition(arr,start,end)
26+
quickSort(arr,start,middle-1)
27+
quickSort(arr,middle+1,end)
2828
}
29-
30-
return arr
3129
}
3230

3331
const test = require('tape')
3432

3533
test('Partition', assert => {
36-
assert.deepEqual(partition([2,8,7,1,3,5,6,4]), 0)
34+
let arr = [2,8,7,1,3,5,6,4]
35+
assert.deepEqual(partition(arr, 0, arr.length - 1), 3)
3736
assert.end()
3837
})
3938

4039
test('Quick sort', assert => {
41-
assert.deepEqual(quickSort([2, 4, 6, 5, 1, 3]), [1, 2, 3, 4, 5, 6])
42-
assert.deepEqual([1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6])
43-
assert.deepEqual(quickSort([-2, 4, 6, -5, 1, 3]), [-5, -2, 1, 3, 4, 6])
44-
assert.deepEqual(quickSort([40, 12, 5, 34, 8, 35]), [5, 8, 12, 34, 35, 40])
40+
let arr = [1, 4, 3, 5, 2]
41+
quickSort(arr, 0, arr.length - 1)
42+
assert.deepEqual(arr, [1,2,3,4,5])
43+
arr = [2,8,7,1,3,5,6,4]
44+
quickSort(arr, 0, arr.length - 1)
45+
assert.deepEqual(arr, [1,2,3,4,5,6,7,8])
4546
assert.end()
4647
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /