为了更好地理解这个示例,我们始终建议您学习下面列出的 Golang 编程 的基础主题
在这里我们将解释如何编写一个 Go 程序来实现排序。有不同类型的排序方法。在这种情况下,我们使用插入排序来对数组中的元素进行排序。插入排序是一种简单的技术,它是通过比较算法开发的。它的工作原理就像你在手中整理扑克牌一样。插入排序是一种比合并排序、堆排序或快速排序更有效和更高级的算法。
在这个 Go 程序中,在排序之前,我们必须设置一个起点,这有助于我们一致地朝一个方向前进,直到到达数组的末尾。这意味着数组首先被分成两个部分:已排序部分和未排序部分。最初,已排序部分只包含一个元素,即主数组的第一个元素,其余元素被视为未排序部分。从未排序部分中取最左边的元素,以在已排序部分中找到合适的位置。重复此过程,直到未排序子数组中没有元素。最后,未排序部分中的每个值都被插入到已排序部分的正确位置。
在这个 Go 程序中,我们可以使用内置函数 fmt.println() 来打印任何内容,使用 fmt.scanln() 来读取值,这些方法都在 fmt 包中定义。为了使用这些函数,我们需要导入“fmt”包。
这里变量 A 存储数组元素。另一个变量 n 用作数组的大小。使用 for 循环读取数组元素并通过调用函数 insertionSort() 执行排序。
insertionSort() 通过在嵌套 for 循环中遍历整个数组元素开始。这意味着,如你所见,在此函数中,我们需要 2 个 for 循环,即外层循环和内层循环。
外层循环使用循环变量 j,它有助于从左到右遍历数组直到数组末尾,并选择一个 key,它有助于一致地朝一个方向前进,直到到达数组末尾,并在每次迭代中将 key 与左侧进行比较。请注意,最初我们从第二个元素(索引 1)中选取 key,以节省 1 次迭代,并有一个左侧可供与 key 进行比较。
在内层循环中,使用变量“i”,它有助于向后遍历左侧的元素。如果元素满足内层循环的排序条件:i>-1 && A[i] > key,则将左侧的所有元素移位为 A[i+1] = A[i]。其中条件 A[i]>key 用于升序排序。
在每次外层循环的 key 迭代中,我们将选定的 key 插入到其正确位置,并重复所有此过程,直到我们遍历所有 key。最后,排序后的数组返回到主函数,主函数将排序后的数组作为输出显示。
时间复杂度
下面是在 Go 程序中实现插入排序的步骤。
步骤1:导入包'fmt'。
步骤 2:打开 main() 开始程序,Go 程序执行从 main() 开始。
步骤 3:声明变量 n。
步骤 4:读取数组的大小为 n。
步骤 5:定义数组 A[]。
步骤 6:使用 'for 循环' 读取 A[] 数组元素。
步骤 7:通过调用函数 insertionSort (A, n) 执行选择排序
步骤8:使用for循环显示排序后的数组。
步骤 9:退出
步骤 1:最初设置 j=1
步骤 2:使用 for 循环打开外层循环,该循环使用 j 循环变量。
步骤 3:如果外层循环满足 j
步骤 4:通过将 A[j] 赋值给 key 来选择一个 key,以便在每次迭代中与左侧进行比较?????
步骤 5:设置 i := j - 1
步骤 6:打开内层循环,该循环使用 'i' 变量。
步骤 7: 如果内层循环满足排序条件:i>-1 && A[i] > key,则将左侧的元素移位为 A[i+1] = A[i]。否则,转到步骤 9。
步骤 8:通过递减 'i' 的值来重复步骤 7,向后遍历左侧的元素,直到选定的 key 到达左侧的开头。
步骤 9:在每次外层循环的 key 迭代中,通过增加 j 的值,我们将选定的 key 插入到其正确位置为 A[i+1] = key。转到步骤 3
步骤 10:返回排序后的数组 A。
package main
import (
"fmt"
)
func main() {
fmt.Println("Enter the size of the array")
var n int
fmt.Scan(&n)
A := make([]int, n, 100)
fmt.Println("Enter elements of the array : ")
for i := 0; i < n; i++ {
fmt.Scan(&A[i])
}
fmt.Println("Sorted array:")
fmt.Println(insertionSort (A, n))
}
func insertionSort(A []int, n int) []int {
for j := 1; j < n; j++ {
key := A[j]
i := j - 1
for i > -1 && A[i] > key {
A[i+1] = A[i]
i -= 1
}
A[i+1] = key
}
return A
}
Enter the size of the array 5 Enter elements of the array : 32 24 56 85 63 Sorted array: [24 32 56 63 85]