冒泡排序算法
它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来
最优时间复杂度O(N)
最坏时间复杂度O(N^2)
- 代码实现
// 冒泡排序算法
func sort1(ls []int) {
n := len(ls)
for i:=0; i<n; i++ {
for j:=0; j<(n-i-1); j++ {
if ls[j] > ls[j+1] {
ls[j], ls[j+1] = ls[j+1], ls[j]
}
}
}
}
插入排序算法
从第二个元素开始,进行与前面元素比较(末尾开始逐个比较),进行排序,
最优时间复杂度:O(n)
最坏时间复杂度:O(n^2)
- 代码实现
// 插入排序算法
func sort2(ls []int) {
n := len(ls)
for i:=1; i<n; i++ {
for j:=i; j>0; j-- {
if ls[j] < ls[j-1] {
ls[j], ls[j-1] = ls[j-1], ls[j]
}
}
}
}
选择排序算法
选择排序算法: 找到最大或最小 放在最右侧或左侧,以此类推
最优时间复杂度O(N^2)
最坏时间复杂度O(N^2)
- 代码实现
// 选择排序算法
func sort3(ls []int) {
n := len(ls)
var min int
for i:=0; i<n; i++ {
min = i
for j:=i; j<n; j++ {
if ls[j] < ls[min]{
min = j
}
}
ls[i], ls[min] = ls[min], ls[i]
}
}