zoukankan      html  css  js  c++  java
  • 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 
    ", middle)
            }
        }
    
  • 相关阅读:
    linux基本命令
    Charles抓包
    html5基础知识
    java流程控制
    Harry Potter and the sorcerer's stone-01 the Boy Who Lived
    java基础知识
    Java程序运行机制
    java基础相关(历史,特性,环境变量)
    markdown基本语法
    Dos相关知识
  • 原文地址:https://www.cnblogs.com/KylinBlog/p/13607256.html
Copyright © 2011-2022 走看看