quick sort added

pull/2/head
0xAX 10 years ago
parent b83ebc65b7
commit ca7cee2796

3
.gitignore vendored

@ -27,4 +27,5 @@ sorting/bubble_sort
sorting/selection_sort
sorting/merge_sort
sorting/cocktail_sort
sorting/gnome_sort
sorting/gnome_sort
sorting/quick_sort

@ -22,6 +22,7 @@ alghoritms
* merge sort
* cocktail sort
* gnome sort
* quick sort
contribution
------------

@ -0,0 +1,49 @@
package main
/*
* Quick sort - https://en.wikipedia.org/wiki/Quicksort
*/
import "fmt"
import "math/rand"
import "github.com/0xAX/go-algorithms"
func quick_sort(arr []int) []int {
if len(arr) <= 1 {
return arr
}
median := arr[rand.Intn(len(arr))]
low_part := make([]int, 0, len(arr))
high_part := make([]int, 0, len(arr))
middle_part := make([]int, 0, len(arr))
for _, item := range arr {
switch {
case item < median:
low_part = append(low_part, item)
case item == median:
middle_part = append(middle_part, item)
case item > median:
high_part = append(high_part, item)
}
}
low_part = quick_sort(low_part)
high_part = quick_sort(high_part)
low_part = append(low_part, middle_part...)
low_part = append(low_part, high_part...)
return low_part
}
func main() {
arr := utils.RandArray(10)
fmt.Println("Initial array is:", arr)
fmt.Println("")
fmt.Println("Sorted array is: ", quick_sort(arr))
}
Loading…
Cancel
Save