Go语言算法之寻找数组第二大元素的方法

本文实例讲述了Go语言算法之寻找数组第二大元素的方法。分享给大家供大家参考。具体如下:

该算法的原理是,在遍历数组的时,始终记录当前最大的元素和第二大的元素。示例代码如下:

package demo01  

  

import (  

    "fmt"  

)  

  

func NumberTestBase() {  

    fmt.Println("This is NumberTestBase")  

  

    nums := []int{12, 24, 2, 5, 13, 8, 7}  

    fmt.Println("nums:", nums)  

    secondMax := getSecondMaxNum(nums)  

    fmt.Println("secondMax=", secondMax)  

}  

  

func getSecondMaxNum(nums []int) int {  

    length := len(nums)  

    if length == 0 {  

        panic("Slice nums cannot be 0-size.")  

    }  

  

    if length == 1 {  

        return nums[0]  

    }  

  

    var max, secondMax int  

    if nums[0] > nums[1] {  

        max = nums[0]  

        secondMax = nums[1]  

    } else {  

        max = nums[1]  

        secondMax = nums[0]  

    }  

  

    for i := 2; i < len(nums); i++ {  

        if nums[i] > secondMax {  

            if nums[i] <= max {  

                secondMax = nums[i]  

            } else {  

                secondMax, max = max, nums[i]  

            }  

        }  

    }  

    return secondMax  

}

希望本文所述对大家的Go语言程序设计有所帮助。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。