最近想重新系统学习并总结一遍数据结构与算法,先从最基础的排序算法开始吧
- 选择排序算法思路如下:
代码实现(Go语言):
package main
import "fmt"
func selectionSort(arr []int) []int{
for i:=0; i<len(arr); i++ {
//1、遍历寻找[i,len(arr))区间里数组的最小值的下标minIndex
minIndex := i
for j:=i+1; j < len(arr); j++ {
if arr[j] < arr[minIndex] {
minIndex = j
}
}
//2、然后arr[minIndex]与数组的arr[i]进行交换
temp := arr[minIndex]
arr[minIndex] = arr[i]
arr[i] = temp
}
return arr
}
func main() {
arr := []int{8,6,2,3,1,5,7,4}
sortArr := selectionSort(arr)
fmt.Println(sortArr)
}
输出:
[1 2 3 4 5 6 7 8]
选择排序算法的时间复杂度是O(n^2)
空间复杂度是O(1)