Skip to content

Instantly share code, notes, and snippets.

@RavenZZ
Forked from RichardKnop/comb_sort.go
Created July 12, 2017 03:29
Show Gist options
  • Save RavenZZ/07cce5de45304df205ab4335c98591ed to your computer and use it in GitHub Desktop.
Save RavenZZ/07cce5de45304df205ab4335c98591ed to your computer and use it in GitHub Desktop.
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
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment