「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」
三言两语
搞懂基础算法系列之排序算法-选择排序
关键点:时间复杂度:O(n^2)
解题思路
选择排序,是通过寻找最小的数后放在起始位置,不断循环,选择剩余最小的数后进行放置,以此类推,直到所有的数据都排序完毕。
解题演示
题目:数组ary = [14, 7, 6, 19, 10, 16],进行升序排序
第一轮:i=0,minIndex = 0 ,j= i+1 依次比较 ary[j] <= ary[minIndex],找到7<14,那么 minIndex = 1,j++ 继续比较,直到比较结束:minIndex= 2,ary[i] 与ary[minIndex]替换:6,7,14,19,10,16
第二轮:i=1,minIndex =1 ,继续比较,直到结束:minIndex=1 和i=1一致,6,7,14,19,10,16
第三轮:i=2,minIndex=2,继续比较。直到结束:minIndex= 4,替换后:6,7,10,19,14,16
第四轮:i=3,minIndex=3,继续比较。直到结束:minIndex= 4,替换后:6,7,10,14,19,16
第五轮:i=4,minIndex=3,继续比较。直到结束:minIndex=5,替换后:6,7,10,14,16,19
则最后结果:6,7,10,14,16,19
代码实现
Golang版本实现
func sortXuanze(ary []int) {
if len(ary) > 1 {
minIndex := 0
for i := 0; i < len(ary)-1; i++ {
minIndex = i
for j := i + 1; j < len(ary); j++ {
if ary[j] <= ary[minIndex] {
minIndex = j
}
}
if minIndex != i {
ary[i], ary[minIndex] = ary[minIndex], ary[i]
}
}
}
for _, v := range ary {
fmt.Print(v, ",")
}
}
JavaScript版本实现
// 选择排序
function sortXuanze(ary) {
if(ary.length >1) {
let minIndex = 0;
for (let i = 0; i<ary.length - 1; i++){
minIndex = i;
for(let j = i+1; j <ary.length; j++) {
if(ary[j] <= ary[minIndex]) {
minIndex = j
}
}
if( minIndex != i) {
let temp = ary[i];
ary[i] = ary[minIndex];
ary[minIndex] = temp;
}
}
}
console.log(ary)
}