一 选择排序
1.1 选择排序概念
冒泡排序的思想是不断的交换,最终完成排序。选择排序即:选择最大值!!其基本思想是每次遍历找到最大的元素,将该最大的元素与末尾元素交换位置,本轮遍历结束后,最后一个元素就是最大元素。
1.2 选择排序实现
func SelectSort(arr []int) {
if arr == nil || len(arr) < 2 {
fmt.Println("数组不满足要求")
return
}
// 从0开始查找
for i :=0 ; i <=len(arr) - 1; i++ {
flag := i
for j := i + 1; j <= len(arr) - 1; j++ {
if arr[flag] > arr[j] {
flag = j
}
}
if flag != i {
temp := arr[i]
arr[i] = arr[flag]
arr[flag] = temp
}
fmt.Println(arr) //为了看具体排序的过程
}
}
二 选择排序复杂度
简单选择排序最大的特点就是交换移动数据次数相当少(冒泡排序每次都会交换,而选择排序是再一轮比较完后再交换), 这样也就节约了相应的时间。无论是最好情况还是最坏情况,选择排序的时间复杂度都是一致的,依然为O(n^2)。虽然时间复杂度与冒泡排序相同,但是选择排序在性能上仍然会略优于冒泡排序。