前面我详细讲解了梳排序算法,现在我们用代码来实现下
package main
import "fmt"
//梳排序
func combSort(theArray[] int)[]int{
theLen := len(theArray)
i := int(float32(theLen)/1.3)
for i >=1{
for j := 0; j<theLen; j++ {
if(i+j >= theLen) {
i = (int)(float32(i)/1.3)
break;
}else {
if(theArray[j] > theArray[i+j]) {
theArray[j], theArray[i+j] = theArray[i+j],theArray[j]
}
}
}
}
return theArray
}
func main() {
var theArray = []int{10, 1, 18, 30, 23, 12, 7, 5, 18, 17}
fmt.Print("排序前")
fmt.Println(theArray)
fmt.Print("排序后")
arrayResult := combSort(theArray)
fmt.Println(arrayResult)
}
我们运行下
排序前[10 1 18 30 23 12 7 5 18 17]
排序后[1 5 7 10 12 17 18 18 23 30]
符合预期