github.com/maikovskiys/l1tasks@v0.0.0-20230927052451-6436d7687dc9/develop/dev16/main.go (about)

     1  package main
     2  
     3  import "fmt"
     4  
     5  /*
     6  Реализовать быструю сортировку массива (quicksort) встроенными методами языка.
     7  */
     8  func main() {
     9  	arr := []int{4, 2, 3, 6, 8, 1, 9, 5}
    10  	result := quickSort(arr)
    11  	fmt.Println(result)
    12  }
    13  func quickSort(arr []int) []int {
    14  	if len(arr) < 2 {
    15  		return arr
    16  	}
    17  	pivot := arr[0]
    18  	var less, greater []int
    19  	for _, v := range arr[1:] {
    20  		if v <= pivot {
    21  			less = append(less, v)
    22  		} else {
    23  			greater = append(greater, v)
    24  		}
    25  
    26  	}
    27  	result := append(quickSort(less), pivot)
    28  	result = append(result, quickSort(greater)...)
    29  	return result
    30  }