练习:使用go语言实现冒泡排序和归并排序
冒泡排序是所有排序算法中最简单的,练习时先实现它:
func bubbleSort(array []int) { n := len(array) for j := 0; j < n; j++ { for i := 0; i < n-1-j; i++ { fmt.Println(i, j, n, array[i], array[i+1]) if array[i] > array[i+1] { array[i], array[i+1] = array[i+1], array[i] } } } }
等语法熟悉之后,可以实现更复杂的算法练习,比如归并排序:
func mergeSort(array []int) []int { n := len(array) if n <= 1 { return array } num := n / 2 left := mergeSort(array[:num]) right := mergeSort(array[num:]) return merge(left, right) } func merge(left, right []int) (result []int) { l, r := 0, 0 for l < len(left) && r < len(right) { if left[l] < right[r] { result = append(result, left[l]) l++ } else { result = append(result, right[r]) r++ } } result = append(result, left[l:]...) result = append(result, right[r:]...) return }
测试代码
package main import "fmt" func main() { src := []int{6, 202, 100, 301, 38, 8, 1} for _, e := range src { fmt.Print(e, ",") } fmt.Println() for _, e := range mergeSort(src) { fmt.Print(e, ",") } fmt.Println() }
原文:https://www.cnblogs.com/mignet/p/Go_learning_All_in_one_2.html