插入排序算法原理:
順序從序列中取一個(gè)數(shù)與左側(cè)的元素們做比較,如果左側(cè)的元素比取的數(shù)大,就向右移,直到把取的數(shù)插入到不小于左側(cè)元素的位置處。類似于撲克牌的點(diǎn)數(shù)排序。
package main
import "fmt"
func main() {
numbers := []int{6, 2, 7, 3, 8, 5}
InsertSort(numbers)
fmt.Println(numbers)
}
func InsertSort(values []int) {
length := len(values)
if length <= 1 {
return
}
for i := 1; i < length; i++ {
tmp := values[i] // 從第二個(gè)數(shù)開始,從左向右依次取數(shù)
key := i - 1 // 下標(biāo)從0開始,依次從左向右
// 每次取到的數(shù)都跟左側(cè)的數(shù)做比較,如果左側(cè)的數(shù)比取的數(shù)大,就將左側(cè)的數(shù)右移一位,直至左側(cè)沒有數(shù)字比取的數(shù)大為止
for key >= 0 && tmp < values[key] {
values[key+1] = values[key]
key--
//fmt.Println(values)
}
// 將取到的數(shù)插入到不小于左側(cè)數(shù)的位置
if key+1 != i {
values[key+1] = tmp
}
//fmt.Println(values)
}
}
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。