算法:冒泡排序
算法 大约 1928 字算法演进
- 第一次从数组第
0
位索引开始遍历到数组最后一位将最大值置换至最后一位。 - 第二次从数组第
0
位索引开始遍历到数组最后第二位将最大值置换至最后第二位。 - 第三次从数组第
0
位索引开始遍历到数组最后第三位将最大值置换至最后第三位。 - 依此类推,重复
array.length-1
次循环。
[3 9 -1 10 -2]
第 1 次排序结果# [3 -1 9 -2 10]
第 2 次排序结果# [-1 3 -2 9 10]
第 3 次排序结果# [-1 -2 3 9 10]
第 4 次排序结果# [-2 -1 3 9 10]
演进示例代码
func Evolution() {
arr := []int{3, 9, -1, 10, -2}
fmt.Println(arr)
var temp = 0
for i := 0; i < len(arr)-1; i++ {
if arr[i] > arr[i+1] {
temp = arr[i+1]
arr[i+1] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
for i := 0; i < len(arr)-1-1; i++ {
if arr[i] > arr[i+1] {
temp = arr[i+1]
arr[i+1] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
for i := 0; i < len(arr)-1-2; i++ {
if arr[i] > arr[i+1] {
temp = arr[i+1]
arr[i+1] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
for i := 0; i < len(arr)-1-3; i++ {
if arr[i] > arr[i+1] {
temp = arr[i+1]
arr[i+1] = arr[i]
arr[i] = temp
}
}
fmt.Println(arr)
}
冒泡排序代码
arr := []int{3, 9, -1, 10, -2}
fmt.Println(arr)
var temp = 0
for i := 0; i < len(arr)-1; i++ {
for j := 0; j < len(arr)-1-i; j++ {
if arr[j] > arr[j+1] {
temp = arr[j+1]
arr[j+1] = arr[j]
arr[j] = temp
}
}
fmt.Println("第",i+1, "次排序结果#",arr)
}
优化后代码
增加判断:如果未发生过交换,则说明数组已经有序,可以结束程序。
arr := []int{-2, 3, 9, -1, 10}
fmt.Println(arr)
var temp = 0
for i := 0; i < len(arr)-1; i++ {
exchange := false
for j := 0; j < len(arr)-1-i; j++ {
if arr[j] > arr[j+1] {
temp = arr[j+1]
arr[j+1] = arr[j]
arr[j] = temp
exchange = true
}
}
fmt.Println("第",i+1, "次排序结果#",arr)
if !exchange {
break
}
}
阅读 412 · 发布于 2021-02-04
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
软考-系统架构设计师:商业智能(BI)阅读 1357
-
Git OpenSSL errno 10054阅读 484
-
Android 使用 libphonenumber 库查询归属地阅读 3457
-
PostgreSQL 统计数组中的元素个数阅读 4192
-
Git 撤销 commit 和回退到指定 commit阅读 2695
-
Windows 后台启动 Nginx、Redis、MongoDB、php-fpm阅读 2057
-
Android item 填充时最外层布局高度失效解决办法阅读 1391
-
设计模式之装饰者模式阅读 1213
-
MongoDB 备份、还原与导出、导入阅读 3946
-
软考-系统架构设计师:网络存储技术 - Raid阅读 1209