用go写排序算法
以下是用Go语言实现的几种排序算法:
- 冒泡排序
func bubbleSort(arr []int) { n := len(arr) for i := 0; i < n; i++ { for j := 0; j < n-i-1; j++ { if arr[j] > arr[j+1] { arr[j], arr[j+1] = arr[j+1], arr[j] } } } }
- 选择排序
func selectionSort(arr []int) { n := len(arr) for i := 0; i < n-1; i++ { minIndex := i for j := i + 1; j < n; j++ { if arr[j] < arr[minIndex] { minIndex = j } } arr[i], arr[minIndex] = arr[minIndex], arr[i] } }
- 插入排序
func insertionSort(arr []int) { n := len(arr) for i := 1; i < n; i++ { temp := arr[i] j := i - 1 for j >= 0 && arr[j] > temp { arr[j+1] = arr[j] j-- } arr[j+1] = temp } }
- 快速排序
func quickSort(arr []int, left, right int) { if left < right { pivot := partition(arr, left, right) quickSort(arr, left, pivot-1) quickSort(arr, pivot+1, right) } }
func partition(arr []int, left, right int) int { pivot := arr[right] i := left - 1 for j := left; j < right; j++ { if arr[j] < pivot { i++ arr[i], arr[j] = arr[j], arr[i] } } arr[i+1], arr[right] = arr[right], arr[i+1] return i + 1 }
- 归并排序
func mergeSort(arr []int) []int { if len(arr) <= 1 { return arr } mid := len(arr) / 2 left := mergeSort(arr[:mid]) right := mergeSort(arr[mid:]) return merge(left, right) }
func merge(left, right []int) []int { res := []int{} for len(left) > 0 && len(right) > 0 { if left[0] <= right[0] { res = append(res, left[0]) left = left[1:] } else { res = append(res, right[0]) right = right[1:] } } if len(left) > 0 { res = append(res, left...) } if len(right) > 0 { res = append(res, right...) } return res }
原文地址: http://www.cveoy.top/t/topic/mFc 著作权归作者所有。请勿转载和采集!