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的排序包通过使用各种排序算法提供了一种更可靠和有效的解决方案。