parent
ca7cee2796
commit
46b32e8b0e
@ -0,0 +1,45 @@
|
||||
package main
|
||||
|
||||
/*
|
||||
* Comb sort - https://en.wikipedia.org/wiki/Combsort
|
||||
*/
|
||||
|
||||
import "fmt"
|
||||
|
||||
import "github.com/0xAX/go-algorithms"
|
||||
|
||||
func main() {
|
||||
arr := utils.RandArray(10)
|
||||
fmt.Println("Initial array is:", arr)
|
||||
fmt.Println("")
|
||||
|
||||
tmp := 0
|
||||
gap := len(arr)
|
||||
|
||||
for {
|
||||
if gap > 1 {
|
||||
gap = gap * 100 / 124
|
||||
}
|
||||
|
||||
for i := 0 ; ; {
|
||||
|
||||
if arr[i] > arr[i + gap] {
|
||||
tmp = arr[i]
|
||||
arr[i] = arr[i + gap]
|
||||
arr[i + gap] = tmp
|
||||
}
|
||||
|
||||
i++
|
||||
|
||||
if i + gap >= len(arr){
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if gap == 1 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Sorted array is: ", arr)
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package main
|
||||
|
||||
/*
|
||||
* Heap sort - https://en.wikipedia.org/wiki/Heapsort
|
||||
*/
|
||||
|
||||
import "fmt"
|
||||
|
||||
import "github.com/0xAX/go-algorithms"
|
||||
|
||||
func sift(arr []int, i int, arrLen int) []int {
|
||||
done := false
|
||||
|
||||
tmp := 0
|
||||
maxChild := 0
|
||||
|
||||
for (i * 2 + 1 < arrLen) && (!done) {
|
||||
if i * 2 + 1 == arrLen - 1 {
|
||||
maxChild = i * 2 + 1
|
||||
} else if (arr[i * 2 + 1] > arr[i * 2 + 2]) {
|
||||
maxChild = i * 2 + 1
|
||||
} else {
|
||||
maxChild = i * 2 + 2
|
||||
}
|
||||
|
||||
if arr[i] < arr[maxChild] {
|
||||
tmp = arr[i]
|
||||
arr[i] = arr[maxChild]
|
||||
arr[maxChild] = tmp
|
||||
i = maxChild
|
||||
} else {
|
||||
done = true
|
||||
}
|
||||
}
|
||||
|
||||
return arr
|
||||
}
|
||||
|
||||
func main() {
|
||||
arr := utils.RandArray(10)
|
||||
fmt.Println("Initial array is:", arr)
|
||||
fmt.Println("")
|
||||
|
||||
i := 0
|
||||
tmp := 0
|
||||
|
||||
for i = len(arr) / 2 - 1; i >= 0; i-- {
|
||||
arr = sift(arr, i, len(arr))
|
||||
}
|
||||
|
||||
for i = len(arr) - 1; i >= 1; i-- {
|
||||
tmp = arr[0];
|
||||
arr[0] = arr[i];
|
||||
arr[i] = tmp;
|
||||
arr = sift(arr, 0, i);
|
||||
}
|
||||
|
||||
fmt.Println("Sorted array is: ", arr)
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
/*
|
||||
* Odd-Even sort - https://en.wikipedia.org/wiki/Odd-even_sort
|
||||
*/
|
||||
|
||||
import "fmt"
|
||||
|
||||
import "github.com/0xAX/go-algorithms"
|
||||
|
||||
func main() {
|
||||
arr := utils.RandArray(10)
|
||||
fmt.Println("Initial array is:", arr)
|
||||
fmt.Println("")
|
||||
|
||||
tmp, isSorted := 0, false
|
||||
|
||||
for ; isSorted == false ; {
|
||||
|
||||
isSorted = true
|
||||
|
||||
for i := 1; i < len(arr) - 1; i = i + 2 {
|
||||
if arr[i] > arr[i + 1] {
|
||||
tmp = arr[i]
|
||||
arr[i] = arr[i + 1]
|
||||
arr[i + 1] = tmp
|
||||
|
||||
isSorted = false
|
||||
}
|
||||
}
|
||||
|
||||
for i := 0; i < len(arr) - 1; i = i + 2 {
|
||||
if arr[i] > arr[i + 1] {
|
||||
tmp = arr[i]
|
||||
arr[i] = arr[i + 1]
|
||||
arr[i + 1] = tmp
|
||||
|
||||
isSorted = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Sorted array is: ", arr)
|
||||
}
|
Loading…
Reference in New Issue