package main
import "fmt"
func shellsortmax(arr []int,start int,gap int){
length:=len(arr)
for i:=start+gap;i<length;i+=gap{
backup:=arr[i]
j:=i-gap
for j >= 0 && backup < arr[j]{
arr[j+gap]=arr[j]
j-=gap
}
arr[j+gap]=backup
}
}
func shellsort(arr []int)([]int) {
var length = len(arr)
if length <= 1 {
return arr
}
gap:=length/2
for gap > 0{
for i:=0;i<gap;i++{
shellsortmax(arr,i,gap)
}
gap--
}
return arr
}
func main(){
needsortslice := []int{3,1,8,6,5,4,9,7,10,12,0}
fmt.Println(shellsort(needsortslice))
}
网友评论