插入排序实现: 插入排序属于内部排序,是对于排序的元素以插入的方式寻找该元素适当的位置,以达到排序的目的
基本思想:把n个待排序的元素看成一个有序和一个无序表,开始时有序中只包含一个元素, 无序表中包含n-1元素,
排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表的元素进行比较, 将它插入到有序表中的适当
位置,使之成为新的有序表;
代码实现:
package main
import (
"fmt"
)
func InsertSort(arr *[5]int) {
//完成第一次,给第二元素找到合适的位置并插入
for i := 1; i < len(arr); i++ {
insertVal := arr[i]
insertIndex := i - 1
//从大到小
for insertIndex >= 0 && arr[insertIndex] < insertVal {
arr[insertIndex + 1] = arr[insertIndex] //数据后移
insertIndex--
}
//插入
if insertIndex + 1 != i {
arr[insertIndex + 1] = insertVal
}
fmt.Printf("第%d次后插入 %v\n", i, *arr)
}
}
func main () {
arr := [5]int{23, 0, 12, 56, 34}
fmt.Println("原始数组=", arr)
InsertSort(&arr)
fmt.Println("main函数")
fmt.Println(arr)
}