swift 冒泡排序

冒泡排序原理

  • 1.對需要排序的數據,倆倆進行比較,小的放前面,大的放后面

  • 2.依次對每一對相鄰的數據作步驟1的工作,當排序到最后一個元素的時候,我們能保證這個數據是最大。

  • 3.針對所有的元素重復以上的步驟,除了最后一個(這里為什么需要針對除了最后一個元素的全部元素做一次呢,因為最后一個元素已經是最大的不需要排序了,同時,由于元素的交換,交換上來的元素的大小不一定比前面的元素的大,所以需要再做一次)。

  • 4持續對越來越少的元素重復3的步驟,直到沒有任何一對元素需要比較。

時間復雜度

  • 我們一般談最壞時間復制度

n(n-1)/2 = O(n2)

算法穩定性

  • 相同元素的前后順序并沒有改變,所以是一種穩定排序算法

swfit代碼

import UIKit
import Foundation

var array  = [Int](count:20,repeatedValue: 0)

for index in 0..<20 {
    array[index] = Int(arc4random_uniform(20)) + 1
}
print("排序前的值")
print(array)
for item in array
{
    var ii = item
    print(ii)
}

for i in 0 ..< array.count {
    for j in 0 ..< array.count - 1 - i {
        if array[j] > array[j+1] {
            var  temp = array[j+1]
            array[j+1] = array[j]
            array[j] = temp
        }
    }
}
print("排序后的值")
print(array)
for item in array
{
    var ii = item
    print(ii)
}

值變化圖

在playground中我們可以看見值變化情況

排序前.png

第一次兩兩比較完.png

此時最大的數已經到了最后,后面就不需要比較了

第二次兩兩比較完..png

此時第二大的數已經到了倒數第二位,后面就不需要比較了

排序完成.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 排序的基本概念 在計算機程序開發過程中,經常需要一組數據元素(或記錄)按某個關鍵字進行排序,排序完成的序列可用于快...
    Jack921閱讀 1,458評論 1 4
  • 概述排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的...
    Luc_閱讀 2,292評論 0 35
  • 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    蟻前閱讀 5,215評論 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,271評論 0 2
  • 因為返校,室友帶來了他以前的室友到宿舍暫住,瞎聊了幾句。發現現在的年輕人撩妹技能高的可怕,之前的分了沒多久,幾個月...
    正兒八經的火華兄閱讀 168評論 0 1