Golang 按姓名排序员工

Golang 按姓名排序员工

在某些情况下,您可能需要一个员工列表,并且需要按照他们姓名首字母的顺序呈现。 在这篇Golang文章中,我们将使用冒泡排序、插入排序以及使用go sort包来对员工姓名进行排序。

步骤

  • 在Employee结构体中创建一个名为“Name”的字段。

  • 将Employee对象数组作为“BubbleSortByEmployeeName”方法的输入。

  • 获取员工数组的长度,并将其保存在变量n中。

  • 从i = 0到n-1开始外部循环,从j = 0到n-i-1开始内部循环。

  • 比较employees[j].Name与employees[j+1].Name。

  • 函数“BubbleSortByEmployeeName”返回。

  • 在main方法中创建一个名为employees的Employee对象数组。

  • 通过迭代employees数组来打印所有工人的姓名。

  • 使用employees数组作为参数时使用BubbleSortByEmployeeName方法。

  • 通过迭代employees数组来打印所有工人的姓名。

示例1:冒泡排序

冒泡排序是一种简单的算法,它将相邻的字母进行比较,并在它们的顺序不正确时进行交换。

package main
import "fmt"

type Employee struct {
   Name string
}

func BubbleSortByEmployeeName(employees []Employee) {
   n := len(employees)
   for i := 0; i < n-1; i++ {
      for j := 0; j < n-i-1; j++ {
         if employees[j].Name > employees[j+1].Name {
            employees[j], employees[j+1] = employees[j+1], employees[j]
         }
      }
   }
}

func main() {
   employees := []Employee{
      {Name: "Nitin"},
      {Name: "Akshay"},
      {Name: "Sahil"},
      {Name: "Akhil"},
   }

   fmt.Println("Before sorting:")
   for _, employee := range employees {
      fmt.Println(employee.Name)
   }

   BubbleSortByEmployeeName(employees)

   fmt.Println("\nAfter sorting:")
   for _, employee := range employees {
      fmt.Println(employee.Name)
   }
}

输出

Before sorting:
Nitin 
Akshay 
Sahil
Akhil 

After sorting: 
Akhil 
Akshay 
Nitin 
Sahil

示例2:插入排序

插入排序也是一种简单的排序算法,它通过逐个元素地将最终的有序数组构建起来。它的工作方式是将未排序的部分中的一个元素插入到有序数组中的正确位置。

package main
import "fmt"

type Employee struct {
   Name string
}

func InsertionSortByEmployeeName(employees []Employee) {
   n := len(employees)
   for i := 1; i < n; i++ {
      key := employees[i]
      j := i - 1
      for j >= 0 && employees[j].Name > key.Name {
         employees[j+1] = employees[j]
         j--
      }
      employees[j+1] = key
   }
}

func main() {
   employees := []Employee{
      {Name: "Krishan"},
      {Name: "Ram"},
      {Name: "Seeta"},
      {Name: "Radha"},
   }

   fmt.Println("Before sorting:")
   for _, employee := range employees {
      fmt.Println(employee.Name)
   }

   InsertionSortByEmployeeName(employees)

   fmt.Println("\nAfter sorting:")
   for _, employee := range employees {
      fmt.Println(employee.Name)
   }
}

代码

Before sorting: 
Krishan 
Ram 
Seeta 
Radha 

After sorting: 
Krishan 
Radha 
Ram 
Seeta

示例 3: 使用 Go 的 Sort 包

Sort.sort() 是 Golang 内置函数,支持多种排序算法和接口。它提供了一种更高效和适应性强的方法来排序数据结构。

package main

import (
   "fmt"
   "sort"
)

type Employee struct {
   Name string
}

type EmployeeSortByName []Employee

func (e EmployeeSortByName) Len() int {
   return len(e)
}

func (e EmployeeSortByName) Less(i, j int) bool {
   return e[i].Name < e[j].Name
}

func (e EmployeeSortByName) Swap(i, j int) {
   e[i], e[j] = e[j], e[i]
}

func main() {
   employees := []Employee{
      {Name: "Krishan"},
      {Name: "Ram"},
      {Name: "Radha"},
      {Name: "Seeta"},
   }

   fmt.Println("Before sorting:")
   for _, employee := range employees {
      fmt.Println(employee.Name)
   }

   sort.Sort(EmployeeSortByName(employees))

   fmt.Println("\nAfter sorting:")
   for _, employee := range employees {
      fmt.Println(employee.Name)
   }
}

输出

Before sorting: 
Krishan 
Ram 
Radha 
Seeta 

After sorting: 
Krishan 
Radha 
Ram 
Seeta

结论

在这篇文章中,我们介绍了三种不同的方法来按照雇员的姓名对一组Employee对象进行排序。尽管冒泡排序和插入排序算法的实现很简单,但它们可能不适用于大数据集。相比之下,Go的排序包通过使用各种排序算法提供了一种更可靠和有效的解决方案。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程