• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
golang数组 排序和查找

            

 

 

 

package main

import "fmt"

func BubbleSort(arr *[5]int){
	fmt.Println("排序前arr=",(*arr))
	temp := 0
	for i := 0;i < len(*arr) - 1;i++{
		for j := 0 ;j<len(*arr) -1 - i;j++{
			if((*arr)[j] > (*arr)[j+1]){
				temp = (*arr)[j]
				(*arr)[j] = (*arr)[j+1]
				(*arr)[j+1] = temp
			}
		}
	}
	fmt.Println("排序后arr=",(*arr))
}


func main()  {
		arr := [5]int{24,69,80,57,13}

		BubbleSort(&arr)

		fmt.Println(arr)
}

  

排序前arr= [24 69 80 57 13]
排序后arr= [13 24 57 69 80]
[13 24 57 69 80]

  

 

 

     

 

//代码
package main
import (
    "fmt"
)

//二分查找函数 //假设有序数组的顺序是从小到大(很关键,决定左右方向)
func BinaryFind(arr *[]int, leftIndex int , rightIndex int, findVal int) {
    //判断leftIndex是否大于rightIndex
    if leftIndex > rightIndex {
        fmt.Println("没找到")
        return
    }

    //先找到中间的下标
    middle := (leftIndex + rightIndex) / 2
    fmt.Println(middle)

    if (*arr)[middle] > findVal {
        fmt.Println(leftIndex)
        fmt.Println(middle - 1)
        BinaryFind(arr, leftIndex, middle - 1, findVal)
    } else if (*arr)[middle] < findVal {
        BinaryFind(arr, middle + 1, rightIndex, findVal)
    } else {
        fmt.Printf("找到了,下标是%v\n", middle)
    }
}


func main() {
    //定义一个数组
    arr := []int{1, 2, 5, 7, 15, 25, 30, 36, 39, 51}
    BinaryFind(&arr, 0, len(arr) - 1, 30)
}

 

 

  

 

 

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/11142597.html

posted on 2019-07-06 14:19  孙龙-程序员  阅读(9251)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3