原理
簡單選擇排序應(yīng)該是最直觀最容易理解的排序方法了。
直接從頭開始一個一個去比,找出最小的放到最左邊。再依次完成其他位的排序。
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、做網(wǎng)站、屏邊網(wǎng)絡(luò)推廣、小程序開發(fā)、屏邊網(wǎng)絡(luò)營銷、屏邊企業(yè)策劃、屏邊品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供屏邊建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
時間復(fù)雜度
比較次數(shù)固定為O(n^2),數(shù)據(jù)交換次數(shù)是0~n-1次
因為會交換不同位置相同數(shù)值的數(shù)據(jù),所以選擇排序并不穩(wěn)定
代碼實現(xiàn)
package main
import (
"fmt"
)
func main() {
var length = 10
var mm = make(map[int]int, length)
var o []int
// 先準備一個順序隨機的數(shù)(qie)組(pian)
for i := 0; i < length; i++ {
mm[i] = i
}
for k, _ := range mm {
o = append(o, k)
}
fmt.Println(o)
// 兩次循環(huán)找到最小的排前面
for i := 0; i < length; i++ {
min := i
for j := length - 1; j >= i; j-- {
if o[j] < o[min] {
min = j
}
}
// 當(dāng)前就是最小值時就不交換了
if min == i {
continue
}
// 順序交換
o[i], o[min] = o[min], o[i]
fmt.Println(o)
}
}
運行結(jié)果