parent
aab0d0ca1f
commit
10b1216675
@ -0,0 +1,38 @@
|
|||||||
|
// File: bubble_sort.go
|
||||||
|
// Created Time: 2022-12-06
|
||||||
|
// Author: Slone123c (274325721@qq.com)
|
||||||
|
|
||||||
|
package bubble_sort
|
||||||
|
|
||||||
|
/* 冒泡排序 */
|
||||||
|
func bubbleSort(nums []int) {
|
||||||
|
// 外循环:待排序元素数量为 n-1, n-2, ..., 1
|
||||||
|
for i := len(nums) - 1; i > 0; i-- {
|
||||||
|
// 内循环:冒泡操作
|
||||||
|
for j := 0; j < i; j++ {
|
||||||
|
if nums[j] > nums[j+1] {
|
||||||
|
// 交换 nums[j] 与 nums[j + 1]
|
||||||
|
nums[j], nums[j+1] = nums[j+1], nums[j]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 冒泡排序(标志优化)*/
|
||||||
|
func bubbleSortWithFlag(nums []int) {
|
||||||
|
// 外循环:待排序元素数量为 n-1, n-2, ..., 1
|
||||||
|
for i := len(nums) - 1; i > 0; i-- {
|
||||||
|
flag := false // 初始化标志位
|
||||||
|
// 内循环:冒泡操作
|
||||||
|
for j := 0; j < i; j++ {
|
||||||
|
if nums[j] > nums[j+1] {
|
||||||
|
// 交换 nums[j] 与 nums[j + 1]
|
||||||
|
nums[j], nums[j+1] = nums[j+1], nums[j]
|
||||||
|
flag = true // 记录交换元素
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if flag == false { // 此轮冒泡未交换任何元素,直接跳出
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
// File: bubble_sort_test.go
|
||||||
|
// Created Time: 2022-12-06
|
||||||
|
// Author: Slone123c (274325721@qq.com)
|
||||||
|
|
||||||
|
package bubble_sort
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBubbleSort(t *testing.T) {
|
||||||
|
var (
|
||||||
|
arr = []int{5, 4, 3, 2, 1}
|
||||||
|
)
|
||||||
|
fmt.Println("冒泡排序前的数组:", arr)
|
||||||
|
bubbleSort(arr)
|
||||||
|
for i := 1; i < len(arr); i++ {
|
||||||
|
if arr[i] < arr[i-1] {
|
||||||
|
t.Errorf("排序不正确")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println("冒泡排序后的数组:", arr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBubbleSortWithFlag(t *testing.T) {
|
||||||
|
var (
|
||||||
|
arr = []int{5, 4, 3, 2, 1}
|
||||||
|
)
|
||||||
|
fmt.Println("冒泡排序前的数组:", arr)
|
||||||
|
bubbleSortWithFlag(arr)
|
||||||
|
for i := 1; i < len(arr); i++ {
|
||||||
|
if arr[i] < arr[i-1] {
|
||||||
|
t.Errorf("排序不正确")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println("冒泡排序后的数组:", arr)
|
||||||
|
}
|
Loading…
Reference in new issue