3. 常见排序算法
3.1 冒泡排序
列表每两个相邻的数,如果前面的数比后面大,则交换这两个数
每一趟完成,无序区域减少一个数,有序区域增加一个数
代码的关键点:趟、无序区范围;算法复杂度:O(n*n)
代码示例:
//Test example
//func main() {
// nums := []int{2, 14, 11, 15, 35, 1, 9, 6, 100, 26, 7, 8}
// a := BubbleSort(nums)
// fmt.Println(a)
//}
func BubbleSort(nums []int) []int {
for i := 0; i < len(nums); i++ {
change := false
for j := 0; j < (len(nums) - 1); j++ {
if nums[j] > nums[j+1] {
nums[j], nums[j+1] = nums[j+1], nums[j]
change = true
}
}
if change == false {
fmt.Println(nums) //演示排序过程,如果排好提前结束
}
}
return nums
}
3.2 选择排序
将其它数字与第一个元素相比较,如果比它小则与其交换位置,然后再将其它数字与第二个元素相比较,若小,再交换位置,以此类推
时间复杂度:O(n*n)