插入排序的一种Go实现
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}
InsertSort(&arr)
}
输出:
第1次插入后[23 0 12 56 34]
第2次插入后[23 12 0 56 34]
第3次插入后[56 23 12 0 34]
第4次插入后[56 34 23 12 0]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。