RavenZZ
7/12/2017 - 3:29 AM

Comb Sort

Comb Sort

package main

import (
	"fmt"
)

func main() {
	items := []int{4, 202, 3, 9, 6, 5, 1, 43, 506, 2, 0, 8, 7, 100, 25, 4, 5, 97, 1000, 27}
	combsort(items)
	fmt.Println(items)
}

func combsort(items []int) {
	var (
		n = len(items)
		gap = len(items)
		shrink = 1.3
		swapped = true
	)
	
	for swapped {
		swapped = false
        	gap = int(float64(gap) / shrink)
        	if gap < 1 {
			gap = 1
		}
		for i := 0; i+gap < n; i++ {
			if items[i] > items[i+gap] {
				items[i+gap], items[i] = items[i], items[i+gap]
				swapped = true
			}	
		}
	}
}