Swift代碼實現(xiàn)冒泡排序算法的簡單實例
冒泡排序原理
1.對需要排序的數(shù)據(jù),倆倆進行比較,小的放前面,大的放后面
2.依次對每一對相鄰的數(shù)據(jù)作步驟1的工作,當排序到最后一個元素的時候,我們能保證這個數(shù)據(jù)是最大。
3.針對所有的元素重復以上的步驟,除了最后一個(這里為什么需要針對除了最后一個元素的全部元素做一次呢,因為最后一個元素已經(jīng)是最大的不需要排序了,同時,由于元素的交換,交換上來的元素的大小不一定比前面的元素的大,所以需要再做一次)。
4持續(xù)對越來越少的元素重復3的步驟,直到?jīng)]有任何一對元素需要比較。
時間復雜度
我們一般談最壞時間復制度
n(n-1)/2 = O(n²)
算法穩(wěn)定性
相同元素的前后順序并沒有改變,所以是一種穩(wěn)定排序算法
import Cocoa var 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) }
運行結(jié)果:
這里的for循環(huán)使用的是C里面?zhèn)鹘y(tǒng)的for循環(huán)方式,請各位指教、以及拍磚!
相關文章
Flutter iOS開發(fā)OC混編Swift動態(tài)庫和靜態(tài)庫問題填坑
這篇文章主要為大家介紹了Flutter iOS OC 混編 Swift動態(tài)庫和靜態(tài)庫問題填坑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07Swift如何調(diào)用Objective-C的可變參數(shù)函數(shù)詳解
這篇文章主要給大家介紹了關于Swift如何調(diào)用Objective-C的可變參數(shù)函數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用swift具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-03-03swift中c風格的for循環(huán)執(zhí)行效率
這篇文章主要介紹了swift中c風格的for循環(huán)執(zhí)行效率 的相關資料,需要的朋友可以參考下2016-07-07Swift使用CollectionView實現(xiàn)廣告欄滑動效果
這篇文章主要為大家詳細介紹了Swift使用CollectionView實現(xiàn)廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06使用Swift實現(xiàn)iOS App中解析XML格式數(shù)據(jù)的教程
這篇文章主要介紹了使用Swift實現(xiàn)iOS App中解析XML格式數(shù)據(jù)的教程,講到了iOS中提供的NSXMLParser和NSXMLParserDelegate兩個API的用法,需要的朋友可以參考下2016-04-04