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()函数,初始化一个数组,并将数值存储到其中,在屏幕上打印该数组。
-
第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()部分,另一个使用外部函数。