Skip to content

Commit a4f1db8

Browse files
committed
merge and quick sort
1 parent d7b9892 commit a4f1db8

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

Diff for: sort_merge.go

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
utils "../golang-algorithms/utils"
6+
)
7+
8+
func merge(arr[] int, iLeft, iMiddle, iRight int) {
9+
// We need a tmp array
10+
var arrTmp[] int
11+
// basic variables
12+
i, j := iLeft, iMiddle + 1
13+
14+
for k := iLeft; k <= iRight; k++ {
15+
if i <= iMiddle && j <= iRight {
16+
if arr[i] < arr[j] {
17+
arrTmp, i = append(arrTmp, arr[i]), i + 1
18+
} else {
19+
arrTmp, j = append(arrTmp, arr[j]), j + 1
20+
}
21+
} else {
22+
if i > iMiddle {
23+
arrTmp, j = append(arrTmp, arr[j]), j + 1
24+
} else {
25+
arrTmp, i = append(arrTmp, arr[i]), i + 1
26+
}
27+
}
28+
}
29+
for k, l := iLeft, 0; l < len(arrTmp) ; k, l = k + 1, l + 1 {
30+
arr[k] = arrTmp[l]
31+
}
32+
}
33+
34+
func mergeSort(arr[] int, iLeft int, iRight int) {
35+
if iLeft < iRight {
36+
var iMiddle int = ( iLeft + iRight ) / 2
37+
mergeSort(arr, iLeft, iMiddle)
38+
mergeSort(arr, iMiddle + 1, iRight)
39+
merge(arr, iLeft, iMiddle, iRight)
40+
}
41+
}
42+
43+
func main() {
44+
arr := utils.RandomIntArray(10)
45+
fmt.Println("Array before: ", arr)
46+
mergeSort(arr, 0, len(arr) - 1)
47+
fmt.Println("Array after: ", arr)
48+
}

Diff for: sort_quick.go

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
utils "../golang-algorithms/utils"
6+
)
7+
8+
func pivot(arr[] int, iLeft int, iRight int) (iPivot int) {
9+
iPivot = iLeft
10+
for i, valInitPivot :=iLeft + 1, arr[iLeft] ; i <= iRight; i++ {
11+
if arr[i] < valInitPivot {
12+
iPivot++
13+
arr[i], arr[iPivot] = arr[iPivot], arr[i]
14+
}
15+
}
16+
arr[iPivot], arr[iLeft] = arr[iLeft], arr[iPivot]
17+
return
18+
}
19+
20+
func quickSort(arr[] int, iLeft int, iRight int) {
21+
if iLeft < iRight {
22+
iPivot := pivot(arr, iLeft, iRight)
23+
quickSort(arr, iLeft, iPivot)
24+
quickSort(arr, iPivot + 1, iRight)
25+
}
26+
}
27+
28+
func main() {
29+
arr := utils.RandomIntArray(10)
30+
fmt.Println("Array before: ", arr)
31+
quickSort(arr, 0, len(arr) - 1)
32+
fmt.Println("Array after: ", arr)
33+
}

0 commit comments

Comments
 (0)