package mainimport "fmt"
var arr = int
func bubblesort() }}
fmt.println(arr)}/*
假設我們現在排序ar=這組資料,
按照上面的排序方式,第一趟排序後將10和9交換已經有序,
接下來的8趟排序就是多餘的,什麼也沒做。所以我們可以在
交換的地方加乙個標記,如果那一趟排序沒有交換元素,說明
這組資料已經有序,不用再繼續下去。
*/func bubblesortv1()
}if !flag
}fmt.println(arr)}/*
優化一僅僅適用於連片有序而整體無序的資料(例如:1, 2,3 ,4 ,7,6,5)
但是對於前面大部分是無序而後邊小半部分有序的資料(1,2,5,7,4,3,6,8,9,10)
排序效率也不可觀,對於種型別資料,我們可以繼續優化。既我們可以記下最後一次交換的位置,
後邊沒有交換,必然是有序的,然後下一次排序從第乙個比較到上次記錄的位置結束即可。
*/func bubblesortv2()
}if !flag
k = pos
}fmt.println(arr)}/*
優化二的效率有很大的提公升,還有一種優化方法可以繼續提高效率。
大致思想就是一次排序可以確定兩個值,正向掃瞄找到最大值交換到最後,
反向掃瞄找到最小值交換到最前面。例如:排序資料1,2,3,4,5,6,0
*/func bubblesortv3()
}if !flag
k = pos
for j := k; j > n; j--
}n++
if !flag
}fmt.println(arr)
}func main()
go實現氣泡排序和快速排序
專案結構 氣泡排序演算法,原始檔bubblesort.go package bubblesort 氣泡排序 func bubblesort values int if flag true 快速排序演算法,原始檔qsort.go package qsort 快速排序 func quicksort va...
氣泡排序和選擇排序(Go語言實現)
氣泡排序和選擇排序是排序演算法中比較簡單和容易實現的演算法。氣泡排序的思想為 每一次排序過程,通過相鄰元素的交換,將當前沒有排好序中的最大 小 移到陣列的最右 左 端。而選擇排序的思想也很直觀 每一次排序過程,我們獲取當前沒有排好序中的最大 小 的元素和陣列最右 左 端的元素交換,迴圈這個過程即可實...
氣泡排序和優化
計算機中解決問題,一定要學會問題分解,先解決比這個容易解決的問題,再慢慢加深 比如 我要對陣列排序,那麼我能不能先求陣列的最小值,放在第乙個位置,這樣一來反覆執行這個操作,就能排序了 比如 我要求子陣列的排序,那麼我先解決整個陣列的排序,然後在改進 變成子陣列的排序 package day7yue1...