• 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
    ", 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
    
    }
    
  • 相关阅读:
    TPLINK GPL code 简要分析
    Openwrt 初探
    物联网-手机远程控制家里的摄像头(3)
    物联网-手机远程控制家里的摄像头(2)
    lumia 520无法开机
    树莓派无法驱动移动硬盘
    Cannot Change Opencv Webcam Setting
    IIC协议理解(转)
    应用调试(六)记录回放输入子系统
    应用调试(五)侵入式SWI
  • 原文地址:https://www.cnblogs.com/x931890193/p/9739847.html
Copyright © 2020-2023  润新知