go语言排序

冒泡:

package main

import (
	"fmt"
)

func BubbleSort(arr []int) []int {
	// 改进的冒泡排序
	num := len(arr) //:=自动匹配变量类型
	for i := 0; i < num; i++ {
		status := false
		for j := i + 1; j < num; j++ {
			if arr[i] > arr[j] {
				status = true
				arr[i], arr[j] = arr[j], arr[i]
			}
		}
		if status == false {
			break
		}
	}
	return arr
}

func main() {
	arr := []int{100, 200, 55, 9, 88, 77, 66, 55, 44, 1, 2, 3, 65, 4, 7, 89, 6, 3, 32, 1, 4, 0, 5, 8, 7}
	fmt.Printf("排序前:%v\n", arr)
	NewArr := BubbleSort(arr)
	fmt.Printf("排序后:%v", NewArr)
}

 插入:

package main

import "fmt"

func main() {
	//插入排序
	arr := []int{1,2,5,8,7,9,6,4,3,0}
	fmt.Println(InertSort(arr))
}


func InertSort(arr []int)[]int{
	num := len(arr)
	for i:=1; i<num; i++{
		min := arr[i]
		j := i-1
		for j >=0 && arr[j] >= min{
			arr[j+1] = arr[j]
			j--
			arr[j+1] = min
		}
	}

 	return arr
}

 选择排序:

package main

import (
	"fmt"
)

func main() {
	arr := []int{1, 2, 5, 8, 7, 4, 3, 6, 9, 0}
	fmt.Println(SelectSort(arr))
}

func SelectSort(arr []int) []int {
	num := len(arr)
	for i := 0; i < num; i++ {
		min := i
		for j := i + 1; j < num; j++ {
			if arr[j] < arr[min] {
				min = j
			}
		}
		arr[i], arr[min] = arr[min], arr[i]
	}
	return arr
}

 二分查找:

package main

import (
	"fmt"
)

func main() {
	arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20}
	fmt.Println(BinarySearch(arr, 5))
}

func BinarySearch(arr []int, key int) int {
	low := 0
	high := len(arr)-1
	for arr[low] <= arr[high] {
		if key > low {
			low = key
		} else if key < high {
			high = key
		} else {
			return key
		}
	}
	return -1

}

 

posted @ 2018-10-03 15:16  阿牛的牙  阅读(387)  评论(0编辑  收藏  举报