forked from kelvins/algorithms-and-data-structures
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bubble_sort.go
35 lines (31 loc) · 787 Bytes
/
bubble_sort.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package main
import "fmt"
// Iterativo
func BubbleSortIterativo(slice []int) {
for indice1 := len(slice) - 1; indice1 > 0; indice1-- {
for indice2 := 0; indice2 < indice1; indice2++ {
if slice[indice2] > slice[indice2+1] {
slice[indice2], slice[indice2+1] = slice[indice2+1], slice[indice2]
}
}
}
}
// Recursivo
func BubbleSortRecursivo(slice []int, tamanho int) {
trocas := 0
for indice := 0; indice < tamanho-1; indice++ {
if slice[indice] > slice[indice+1] {
slice[indice], slice[indice+1] = slice[indice+1], slice[indice]
trocas++
}
}
if trocas != 0 {
BubbleSortRecursivo(slice, tamanho-1)
}
}
func main() {
slice := []int{5, 2, 1, 6, 9, 8, 7, 3, 4}
fmt.Println("Slice:", slice)
BubbleSortIterativo(slice)
fmt.Println("BubbleSort:", slice)
}