File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments