Ir a la clasificación de burbujas (la más detallada de toda la red)

La idea básica de la clasificación de burbujas : compare los códigos de clasificación de los elementos adyacentes en secuencia de atrás hacia adelante en la secuencia de clasificación, e intercambie si se encuentra el orden inverso, de modo que los elementos con el código de clasificación más pequeño se muevan gradualmente desde atrás al frente, como burbujas en la parte inferior Igual hacia arriba

Demostración de caso:

Supongamos que una matriz es: 24,69,80,57,13

Ronda 1 :

Después de la primera clasificación: (Compare 24 con 69)

24,69,80,57,13

Después de la segunda clasificación: (Compare 69 con 80)

24,69,80,57,13

Después de la tercera clasificación: (se comparan 80 y 57, se intercambian)

24,69,57,80,13

Después del cuarto tipo: (se comparan 80 y 13, se intercambian)

24,69,57,13,80

La ronda 2:

Después de la primera clasificación: (Compare 24 con 69)

24,69,57,13,80

Después de la segunda clasificación: (Compare 69 con 57, intercambie)

24,57,69,13,80

Después de la tercera clasificación: (comparación 69 y 13, intercambio)

24,57,13,69,80

Ronda 3:

Después de la primera clasificación: (Compare 24 con 57)

24,57,13,69,80

Después de la primera clasificación: (se comparan 57 y 13, se intercambian)

24,13,57,69,80

Ronda 4:

Después de la primera clasificación: (se comparan e intercambian 24 y 13)

13,24,57,69,80

Cada ronda se da cuenta de:

Ronda 1 :

package main

import "fmt"

// 冒泡排序
func bubbleSort(arr *[5]int) {
	for j := 0; j < 4; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第1轮排序后:", (*arr))
}

func main() {
	arr := [5]int{24,69,80,57,13}
	bubbleSort(&arr)
}

Ronda 2 :

package main

import "fmt"

// 冒泡排序
func bubbleSort(arr *[5]int) {
	for j := 0; j < 4; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第1轮排序后:", (*arr))

	for j := 0; j < 3; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第2轮排序后:", (*arr))
}

func main() {
	arr := [5]int{24,69,80,57,13}
	bubbleSort(&arr)
}

Ronda 3 :

package main

import "fmt"

// 冒泡排序
func bubbleSort(arr *[5]int) {
	for j := 0; j < 4; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第1轮排序后:", (*arr))

	for j := 0; j < 3; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第2轮排序后:", (*arr))

	for j := 0; j < 2; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第3轮排序后:", (*arr))
}

func main() {
	arr := [5]int{24,69,80,57,13}
	bubbleSort(&arr)
}

Ronda 4 :

package main

import "fmt"

// 冒泡排序
func bubbleSort(arr *[5]int) {
	for j := 0; j < 4; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第1轮排序后:", (*arr))

	for j := 0; j < 3; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第2轮排序后:", (*arr))

	for j := 0; j < 2; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第3轮排序后:", (*arr))

	for j := 0; j < 1; j++ {
		temp := 0
		if (*arr)[j] > (*arr)[j+1] {
			temp = (*arr)[j]
			(*arr)[j] = (*arr)[j+1]
			(*arr)[j+1] = temp
		}
	}
	fmt.Println("第4轮排序后:", (*arr))
}

func main() {
	arr := [5]int{24,69,80,57,13}
	bubbleSort(&arr)
}

Resuma las reglas para obtener el código final:

package main

import "fmt"

// 冒泡排序
func bubbleSort(arr *[5]int) {
	fmt.Println("排序前:", (*arr))
	// 总结规律:先内层(每一轮)再外层,内层n-1-i次,外层n-1
	for i := 0; i < len(*arr)-1; i++ {
		for j := 0; j < len(*arr)-1-i; j++ {
			temp := 0
			if (*arr)[j] > (*arr)[j+1] {
				temp = (*arr)[j]
				(*arr)[j] = (*arr)[j+1]
				(*arr)[j+1] = temp
			}
		}
	}
	fmt.Println("排序后:", (*arr))
}

func main() {
	arr := [5]int{24, 69, 80, 57, 13}
	bubbleSort(&arr)
}

 

Supongo que te gusta

Origin blog.csdn.net/qq2942713658/article/details/113029588
Recomendado
Clasificación