插入排序(Insertion sort)
-
基本介紹
插入排序的基本操作是將一個數據插入到已經排好序的有序數據中,從而得到一個新的有序數據,算法適用於少量數據的排序。(穩定)
-
代碼實現
func InsertSort(nums []int) { for i := 0; i < len(nums); i++ { //從數組中取出的第i個值 insertVal := nums[i] //第i個值的前一個下標開始於i進行比較 insertIndex := i - 1 //如果insert index合法並且前面的值小於取出的值,就將數據後移一位 for insertIndex >= 0 && nums[insertIndex] < insertVal { nums[insertIndex+1] = nums[insertIndex] insertIndex-- } //如果插入值的位置變化(即上述循環發生),就將值插入到正確位置 if insertIndex+1 != i { nums[insertIndex+1] = insertVal } fmt.Printf("第%d次插入後%v\n",i,nums) } } func main() { a := []int{1,2,3,5,4} InsertSort(a) fmt.Println(a) }