冒泡排序原理
1.對(duì)需要排序的數(shù)據(jù),倆倆進(jìn)行比較,小的放前面,大的放后面
2.依次對(duì)每一對(duì)相鄰的數(shù)據(jù)作步驟1的工作,當(dāng)排序到最后一個(gè)元素的時(shí)候,我們能保證這個(gè)數(shù)據(jù)是最大。
3.針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)(這里為什么需要針對(duì)除了最后一個(gè)元素的全部元素做一次呢,因?yàn)樽詈笠粋€(gè)元素已經(jīng)是最大的不需要排序了,同時(shí),由于元素的交換,交換上來(lái)的元素的大小不一定比前面的元素的大,所以需要再做一次)。
4持續(xù)對(duì)越來(lái)越少的元素重復(fù)3的步驟,直到?jīng)]有任何一對(duì)元素需要比較。
時(shí)間復(fù)雜度
我們一般談最壞時(shí)間復(fù)制度
n(n-1)/2 = O(n²)
算法穩(wěn)定性
相同元素的前后順序并沒(méi)有改變,所以是一種穩(wěn)定排序算法
import Cocoavar array = [123,234,12,346,4,75,67,234,23,1233,3,5,986,98,567,345,234,234]println("排序前的值:")for item in array{ var ii = item println(ii)}for var i = 0; i < array.count - 1; ++i { for var j = 0; j < array.count - 1 - i; ++j{ if array[j] > array[j + 1] { var temp = array[j + 1] array[j + 1] = array[j] array[j] = temp } }}println("排序后的值:")for item in array{ var ii = item println(ii)}
運(yùn)行結(jié)果:
這里的for循環(huán)使用的是C里面?zhèn)鹘y(tǒng)的for循環(huán)方式,請(qǐng)各位指教、以及拍磚!
|
新聞熱點(diǎn)
疑難解答
圖片精選