forked from kelvins/algorithms-and-data-structures
-
Notifications
You must be signed in to change notification settings - Fork 1
/
bubbleSort.go
36 lines (33 loc) · 885 Bytes
/
bubbleSort.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
36
/*
* Bubble Sort é um dos algoritmos de ordenação mais simples.
* A ideia principal é percorrer o vetor/slice várias vezes
* empurrando/flutuando os valores mais altos para o fim do vetor.
*/
package bubblesort
// Bubble Sort tradicional
func BubbleSort(slice []int) {
for indice1 := len(slice) - 1; indice1 > 0; indice1-- {
for indice2 := 0; indice2 < indice1; indice2++ {
if slice[indice2] > slice[indice2+1] {
temp := slice[indice2]
slice[indice2] = slice[indice2+1]
slice[indice2+1] = temp
}
}
}
}
// Bubble Sort recursivo
func BubbleSortRecursivo(slice []int, tamanho int) {
trocas := 0
for indice := 0; indice < tamanho-1; indice++ {
if slice[indice] > slice[indice+1] {
temp := slice[indice]
slice[indice] = slice[indice+1]
slice[indice+1] = temp
trocas++
}
}
if trocas != 0 {
BubbleSortRecursivo(slice, tamanho-1)
}
}