Go语言算法之寻找数组第二大元素的方法
程序员文章站
2022-06-24 11:53:48
本文实例讲述了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
}
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语言程序设计有所帮助。