func selectSort(arr []int) { for i := 0; i < len(arr)-1; i++ { var min = i for j := i + 1; j < len(arr); j++ { if arr[min] > arr[j] { min = j } } arr[i], arr[min] = arr[min], arr[i] } }
func insertionSort(arr []int) { for i := range arr { preIndex := i - 1 current := arr[i] for preIndex >= 0 && arr[preIndex] > current { arr[preIndex+1] = arr[preIndex] preIndex -= 1 } arr[preIndex+1] = current } }
func mergeSort(arr []int) []int { if len(arr) < 2 { return arr } i := len(arr) / 2 left := mergeSort(arr[:i]) right := mergeSort(arr[i:]) result := merge(left, right) return result }
func merge(left, right []int) []int { result := make([]int, 0) m, n := 0, 0 l, r := len(left), len(right) for m < l && n < r { if left[m] > right[n] { result = append(result, right[n]) n++ } else { result = append(result, left[m]) m++ } } result = append(result, right[n:]...) result = append(result, left[m:]...) return result }