經典排序演算法 氣泡排序 快速排序

2022-02-01 01:27:37 字數 1269 閱讀 2583

氣泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素「浮」到頂端,最終達到完全有序。

特點:如果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語言的時候就已經學過了,最近這段時間想起來把比較經典的排序演算法拿來回顧一下,鞏固一下知識。氣泡排序的核心就是比較相鄰兩個數的大小,然後將小的 或者大的 放到前面去,經過一趟之後,就能把最小或者最大的放到最前面,第二趟排序的時候,第乙個數不參與排序,從第二個數開始,經過一趟...

經典排序演算法 氣泡排序

對列表的無序部分從頭至尾掃瞄一遍,掃瞄過程中通過不斷交換相鄰兩個元素,最終把最大 小 元素交換到列表末尾。首先比較第一和第二個數,把較大的放在第二位。比較第二個和第三個數,再把較大的數放在第三位。如此比較下去,直到比較完最後兩個數。這樣就把整個列表中最大的數交換到了末尾。上面三步只是完成了對列表無序...

經典排序演算法 氣泡排序

氣泡排序的原理是從第乙個數字開始,依次讓相鄰的兩個數字進行比較,按照從大到小或從小到大的順序進行交換 如果是公升序排列就把小的放前面,如果降序排列就把大的放前面 第一趟比較後,就把最大的的數字放在最後乙個位置 假設按照公升序排列 然後進行第二趟比較,依次進行相鄰數字比較,第二趟比較後次大的數字放在了...