package main
import "fmt"
func main() {
var arr1 = []int{12,34,6,8,9}
bubbleSort(arr1)
fmt.Println(arr1)
var arr2 = []int{3,46,79,0,24}
selectSort(arr2)
fmt.Println(arr2)
var arr3 = []int{73,4,32,1,3,5}
insertSort(arr3)
fmt.Println(arr3)
var arr4 = []int{12, 21, 3, 101, 11, 4312, 2123, 1214265, 21}
sortArr := quickSort(arr4)
fmt.Println(sortArr)
}
func bubbleSort(arr []int) {
if len(arr) < 2 {
return
}
for i:=0;i<len(arr);i++{
flag := false
for j:=0;j<len(arr)-1-i;j++{
if arr[j]>arr[j+1]{
arr[j],arr[j+1] = arr[j+1],arr[j]
flag = true
}
}
if !flag{
break
}
}
}
func selectSort(arr []int){
if len(arr)<=0{
return
}
for i:=0;i<len(arr)-1;i++{
minIndex := i
for j:=i+1;j<len(arr);j++{
if arr[minIndex]>arr[j]{
minIndex = j
}
}
if minIndex!=i{
arr[minIndex],arr[i] = arr[i],arr[minIndex]
}
}
}
func insertSort(arr []int) {
for i := 1; i < len(arr); i++ {
temp := arr[i]
j := i - 1
for j >= 0 && arr[j] > temp {
arr[j+1] = arr[j]
j--
}
arr[j+1] = temp
}
}
func shellSort(arr []int) {
for gap := len(arr) / 2; gap > 0; gap /= 2 {
for i := gap; i < len(arr); i++ {
temp := arr[i]
j := i - gap
for j >= 0 && arr[j] < temp {
arr[j+gap] = arr[j]
j -= gap
}
arr[j+gap] = temp
}
}
}
func quickSort(arr []int) []int {
if len(arr) <= 1 {
return arr
}
pivotIndex := len(arr) / 2
pivot := arr[pivotIndex]
left := make([]int, 0)
middle := make([]int, 0)
right := make([]int, 0)
for _, value := range arr {
if value < pivot {
left = append(left, value)
} else if value == pivot {
middle = append(middle, value)
} else {
right = append(right, value)
}
}
left = quickSort(left)
right = quickSort(right)
left = append(left, middle...)
left = append(left, right...)
return left
}