算法:选择排序
算法 大约 1414 字算法演进
- 假定第
0
位索引对应元素值最小。 - 第一次循环从第
1
位索引开始,与第0
位索引对应的元素对比,如果第1
位索引对应的元素比第0
位索引对应的元素小,交换元素对应的值。 - 第二次循环从第
2
位索引开始,与第0
位索引对应的元素对比,如果第2
位索引对应的元素比第0
位索引对应的元素小,交换元素对应的值。 - 第三次循环从第
3
位索引开始,与第0
位索引对应的元素对比,如果第3
位索引对应的元素比第0
位索引对应的元素小,交换元素对应的值。 - 依此类推,重复
array.length-1
次循环。
[100 20 300 0]
第 1 次排序# [0 100 300 20]
第 2 次排序# [0 20 300 100]
第 3 次排序# [0 20 100 300]
演进示例代码
func SelectSortEvolution() {
arr := []int{100, 20, 300, 0}
// 假设arr[0]为最小值,从第二个元素开始遍历(计数都从1开始)
for i := 1; i < len(arr); i++ {
// 如果元素比第一个元素(第0位索引)大,则交换
if arr[0] > arr[i] {
temp := arr[0]
arr[0] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
for i := 2; i < len(arr); i++ {
// 如果元素比第二个元素(第1位索引)大,则交换
if arr[1] > arr[i] {
temp := arr[1]
arr[1] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
for i := 3; i < len(arr); i++ {
// 如果元素比第三个元素(第2位索引)大,则交换
if arr[2] > arr[i] {
temp := arr[2]
arr[2] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
}
选择排序代码
arr := []int{100, 20, 300, 0}
fmt.Println(arr)
for i := 0; i < len(arr)-1; i++ {
for j := 1 + i; j < len(arr); j++ {
if arr[i] > arr[j] {
temp := arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
fmt.Println("第", i+1, "次排序#", arr)
}
阅读 403 · 发布于 2021-02-05
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Docker Dockerfile 关键字阅读 376
-
Git 提示 refusing to merge unrelated histories阅读 1644
-
Prometheus+Grafana+node_exporter 监控 Linux 服务器阅读 473
-
Linux 之 CentOS gcc 版本升级为 4.8.2 方法阅读 1186
-
前端 Chrome 反《反调试》阅读 7133
-
JMeter 提取 JSON 字段用于下一个请求阅读 685
-
软考:系统架构设计师-性能监测方法阅读 783
-
为什么匿名内部类引用外部局部变量不用加 final 也不报错阅读 149
-
Linux jobs fg bg disown阅读 1762
-
IDEA Debug 人为修改数值模拟数据不一致情况阅读 603