Golang 使用插入排序对数组进行降序排序
插入排序是一种简单的排序算法,它的工作方式类似于你在手中排序纸牌的方式。数组被虚拟地分成一个已排序部分和一个未排序部分。从未排序数组中选择元素并将其放置在未排序数组的正确位置上,结果数组变为排序状态。在这里,我们将学习使用插入排序的不同方法对数组进行降序排序的go编程语言。
语法
func append(slice, element_1, element_2…, element_N) []T
append函数用于将值添加到数组片段中。它需要多个参数。第一个参数是我们希望添加值的数组,之后是要添加的值。然后该函数返回包含所有值的最终数组片段。
func make ([] type, size, capacity)
在Go语言中,make函数用于创建数组/映射,它接受要创建的变量的类型、大小和容量作为参数,并返回我们可以存储在变量中的切片。
步骤
- 步骤1 - 首先,我们需要导入fmt包。
-
步骤2 - 然后,我们需要开始main()函数。在这个函数内部,使用make()函数初始化一个整数数组,并使用append()函数给它赋值。
-
步骤3 - 然后,我们需要使用fmt.Println()函数将数组打印在屏幕上。然后使用for循环遍历数组,并将数组的当前元素存储在一个临时变量key中。初始化一个新变量,并通过递减索引将值赋给它。
-
步骤4 - 现在,使用for循环检查当前元素是否大于前一个元素。
-
步骤5 - 如果条件满足,则交换两个值,并在这个内部循环中递减当前索引。
-
步骤6 - 重复这个过程,直到遍历整个数组,并将所得到的最终数组打印在屏幕上。
-
步骤7 - 现在,开始main()函数初始化一个数组,并存储值到其中。打印数组在屏幕上。(例如2)
-
步骤8 - 现在,通过将数组作为参数调用insertionSort()函数,并将结果存储在一个名为result的新数组中。(例如2)
-
步骤9 - 将得到的数组打印在屏幕上。
示例1
在这个示例中,我们将编写一个Go语言程序,使用插入排序对整数数组进行降序排序。
package main
import "fmt"
func main() {
// initializing an array
arr := make([]int, 0, 5)
arr = append(arr, 5, 2, 4, 6, 1, 3)
fmt.Println("The given array is: ", arr)
for i := 1; i < len(arr); i++ {
key := arr[i]
j := i - 1
for j >= 0 && arr[j] < key {
arr[j+1] = arr[j]
j = j - 1
}
arr[j+1] = key
}
fmt.Println("Sorted Array in Descending Order: ", arr)
}
输出
The given array is: [5 2 4 6 1 3]
Sorted Array in Descending Order: [6 5 4 3 2 1]
示例2
在这个示例中,我们将展示如何使用外部用户定义的函数使用插入排序将数组按降序排序。我们创建的函数接受要排序的数组作为参数,并将最终排序后的数组作为结果返回,我们可以在屏幕上打印出来。
package main
import "fmt"
func insertionSort(arr []int) []int {
for i := 1; i < len(arr); i++ {
key := arr[i]
j := i - 1
for j >= 0 && arr[j] < key {
arr[j+1] = arr[j]
j = j - 1
}
arr[j+1] = key
}
return arr
}
func main() {
// initializing an array
arr := make([]int, 0, 5)
arr = append(arr, 5, 2, 4, 6, 1, 3)
fmt.Println("The given array is: ", arr)
res := insertionSort(arr)
fmt.Println("Sorted Array in Descending Order:", res)
}
输出
The given array is: [5 2 4 6 1 3]
Sorted Array in Descending Order: [6 5 4 3 2 1]
结论
我们成功地编写并执行了一个使用插入排序方法将数组按降序排序的go语言程序,并附有示例。我们在这里使用了两个示例,一个是在程序的main()部分使用的,另一个是使用了外部函数的示例。
极客笔记