Skip to content

Commit 5735c45

Browse files
quicksort
1 parent fc889cc commit 5735c45

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

quickSort.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package main
2+
3+
import "fmt"
4+
import "math/rand"
5+
6+
7+
func quick_sort(arr []int) []int {
8+
9+
if len(arr) <= 1 {
10+
return arr
11+
}
12+
13+
median := arr[rand.Intn(len(arr))]
14+
15+
low_part := make([]int, 0, len(arr))
16+
high_part := make([]int, 0, len(arr))
17+
middle_part := make([]int, 0, len(arr))
18+
19+
for _, item := range arr {
20+
switch {
21+
case item < median:
22+
low_part = append(low_part, item)
23+
case item == median:
24+
middle_part = append(middle_part, item)
25+
case item > median:
26+
high_part = append(high_part, item)
27+
}
28+
}
29+
30+
low_part = quick_sort(low_part)
31+
high_part = quick_sort(high_part)
32+
33+
low_part = append(low_part, middle_part...)
34+
low_part = append(low_part, high_part...)
35+
36+
return low_part
37+
}
38+
39+
func main() {
40+
arr := RandomArray(10)
41+
42+
fmt.Println("Initial array is:", arr)
43+
fmt.Println("")
44+
fmt.Println("Sorted array is: ", quick_sort(arr))
45+
}
46+
47+
func RandomArray(n int) []int {
48+
arr := make([]int, n)
49+
for i := 0; i <= n - 1; i++ {
50+
arr[i] = rand.Intn(n)
51+
}
52+
return arr
53+
}

0 commit comments

Comments
 (0)