以下是用Go语言实现的几种排序算法:

  1. 冒泡排序

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] } } } }

  1. 选择排序

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] } }

  1. 插入排序

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 } }

  1. 快速排序

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 }

  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 }

用go写排序算法

原文地址: http://www.cveoy.top/t/topic/mFc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录