冒泡排序
时间复杂度:
O(n^2)
原理:
每次遍历可以获取数组中的最值,并将其排放在正确位置。如此循环,直至最后一个结束,此时数组就是有序的了。
步骤:
1、从第一个数组开始,和它相邻的元素比较大小。如果他们不符合排序规则,就把他们交换过来。
2、按照规则 1,依次交换到最后一个元素。
3、由于每一次遍历,都可以确定当前遍历集合中的最值,所以每次遍历,相较于上一次来说,可以少一次对比。
4、重复执行直至循环结束。
https://github.com/czasg/strualgo/blob/main/algo/sort/bubble.go
package sort
import "github.com/czasg/strualgo/basis"
func BubbleSortASC[Number basis.Number](nums []Number) []Number {
newNums := make([]Number, len(nums))
for index, num := range nums {
newNums[index] = num
}
for i := 0; i < len(newNums)-1; i++ {
for j := 0; j < len(newNums)-i-1; j++ {
if newNums[j] > newNums[j+1] {
newNums[j], newNums[j+1] = newNums[j+1], newNums[j]
}
}
}
return newNums
}