Golang排序和查找

排序

  1. 内部排序
    指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);
  2. 外部排序
    数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。
  • 冒泡排序
    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))
    }

查找

在 Golang 中,我们常用的查找有两种:

  1. 顺序查找
  2. 二分查找(该数组是有序)
  • 二分查找
    func BinaryFind(arr *[6]int, leftIndex int, rightIndex int, findVal int) {
        //判断leftIndex 是否大于 rightIndex
        if leftIndex > rightIndex {
            fmt.Println("找不到")
            return
        }

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

        if (*arr)[middle] > findVal {
            //说明我们要查找的数,应该在  leftIndex --- middel-1
            BinaryFind(arr, leftIndex, middle - 1, findVal)
        } else if (*arr)[middle] < findVal {
            //说明我们要查找的数,应该在  middel+1 --- rightIndex
            BinaryFind(arr, middle + 1, rightIndex, findVal)
        } else {
            //找到了
            fmt.Printf("找到了,下标为%v \n", middle)
        }
    }
posted @   养诚  阅读(159)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示