氣泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素「浮」到頂端,最終達到完全有序。
特點:如果n個元素按照從小到大排序,每一輪(i)排序後,最大的元素會放到最後,後續新一輪只需要前n-i個元素互相比較。
題目:給出無需陣列 [4,3,1,2],要求按照從小到大使用氣泡排序法排序。
輸出樣例:
123
4
package main
import "fmt"
//氣泡排序
//時間o(n^2),最好o(n);空間o(1)
//相鄰記錄兩兩比較,如果反序則交換
func bubblesort(arr int)
} }}func main()
bubblesort(arr)
fmt.println(arr)
}
測試:
$ go run main.go
[1 1 2 3 5 49]
之所以和氣泡排序列在一起,因為快速排序是氣泡排序的公升級,屬於交換排序型別。
package main
import "fmt"
//快速排序
//時間複雜度n*o(logn),空間複雜度o(logn)。空間複雜度是遞迴造成的。不穩定排序。
func quicksort(arr int)
func quciksorth(arr int, low int, high int)
}func partition(arr int, low int, high int) int
arr[low], arr[high] = arr[high], arr[low]
for low < high && arr[low] <= pivot
arr[low], arr[high] = arr[high], arr[low]
} return low
}func main()
quicksort(arr)
fmt.println(arr)
}
測試:
$ go run main.go
[1 1 2 3 5 49]
參考:**排序演算法(一)之3種簡單排序(選擇,冒泡,直接插入) - dreamcatcher-cx -
經典排序演算法,氣泡排序
氣泡排序是本人在大一學習c語言的時候就已經學過了,最近這段時間想起來把比較經典的排序演算法拿來回顧一下,鞏固一下知識。氣泡排序的核心就是比較相鄰兩個數的大小,然後將小的 或者大的 放到前面去,經過一趟之後,就能把最小或者最大的放到最前面,第二趟排序的時候,第乙個數不參與排序,從第二個數開始,經過一趟...
經典排序演算法 氣泡排序
對列表的無序部分從頭至尾掃瞄一遍,掃瞄過程中通過不斷交換相鄰兩個元素,最終把最大 小 元素交換到列表末尾。首先比較第一和第二個數,把較大的放在第二位。比較第二個和第三個數,再把較大的數放在第三位。如此比較下去,直到比較完最後兩個數。這樣就把整個列表中最大的數交換到了末尾。上面三步只是完成了對列表無序...
經典排序演算法 氣泡排序
氣泡排序的原理是從第乙個數字開始,依次讓相鄰的兩個數字進行比較,按照從大到小或從小到大的順序進行交換 如果是公升序排列就把小的放前面,如果降序排列就把大的放前面 第一趟比較後,就把最大的的數字放在最後乙個位置 假設按照公升序排列 然後進行第二趟比較,依次進行相鄰數字比較,第二趟比較後次大的數字放在了...