Go Program to Find the Second Largest Number in an Array

1. Introduction

In many scenarios, beyond just finding the largest number, we also need to determine the second largest element in a collection. This could be relevant in ranking systems, contests, or data analytics. In this post, we will guide you through a Go program to find the second largest number in an array.

2. Program Overview

The Go program we are about to discuss will:

1. Initialize an array of integers.

2. Scan the array to determine both the largest and second largest numbers.

3. Display the result.

3. Code Program

package main

import (
	"fmt"
)

func secondLargest(nums []int) int {
	// Setting initial values for first and second to the smallest integer value
	first, second := int(^uint(0)>>1), int(^uint(0)>>1)

	for _, num := range nums {
		if num > first {
			second = first
			first = num
		} else if num > second && num != first {
			second = num
		}
	}
	return second
}

func main() {
	arr := []int{12, 35, 1, 10, 34, 1}
	fmt.Println("The second largest number is:", secondLargest(arr))
}

Output:

The second largest number is: 34

4. Step By Step Explanation

1. Initializing values: We start by setting our initial values of first and second to the smallest possible integer value. These variables will respectively store the largest and second largest values we encounter.

2. Iterating through the array: We use a for loop to scan each number. If a number is greater than our current first, we update second to the value of first and then update first to this new largest number. If a number is between the values of first and second (and not equal to first), it becomes the new second.

3. Main function: This function initializes our array and then calls the secondLargest function, printing out the result.

This method of determining the second largest number is efficient, as it only requires a single pass through the array.

Comments