前面我们详细的讲解了地精排序算法,现在我们用go语言来实现下
package main
import "fmt"
//地精排序
func gnomeSort(theArray []int) []int {
i := 0
for i<len(theArray){
if i==0 || theArray[i-1] <= theArray[i]{
i++
}else{
theArray[i-1], theArray[i] = theArray[i], theArray[i-1]
i--
}
}
return theArray
}
func main() {
var theArray = []int{10,1,18,30,23,12,7,5,18,17}
fmt.Print("排序前")
fmt.Println(theArray)
fmt.Print("排序后")
fmt.Println(gnomeSort(theArray))
}
我们执行下,看结果
排序前[10 1 18 30 23 12 7 5 18 17]
排序后[1 5 7 10 12 17 18 18 23 30]
符合预期