* comb sort added

* odd-even sort added
   * heap sort added
pull/4/head
0xAX 10 years ago
parent ca7cee2796
commit 46b32e8b0e

5
.gitignore vendored

@ -28,4 +28,7 @@ sorting/selection_sort
sorting/merge_sort
sorting/cocktail_sort
sorting/gnome_sort
sorting/quick_sort
sorting/quick_sort
sorting/comb_sort
sorting/odd_even_sort
sorting/heap_sort

@ -23,6 +23,9 @@ alghoritms
* cocktail sort
* gnome sort
* quick sort
* comb sort
* odd/even sort
* heap sort
contribution
------------

@ -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…
Cancel
Save