冒泡排序原理
-
1.对需要排序的数据,俩俩进行比较,小的放前面,大的放后面
-
2.依次对每一对相邻的数据作步骤1的工作,当排序到最后一个元素的时候,我们能保证这个数据是最大。
-
3.针对所有的元素重复以上的步骤,除了最后一个(这里为什么需要针对除了最后一个元素的全部元素做一次呢,因为最后一个元素已经是最大的不需要排序了,同时,由于元素的交换,交换上来的元素的大小不一定比前面的元素的大,所以需要再做一次)。
-
4持续对越来越少的元素重复3的步骤,直到没有任何一对元素需要比较。
时间复杂度
- 我们一般谈最坏时间复制度
n(n-1)/2 = O(n²)
算法稳定性
- 相同元素的前后顺序并没有改变,所以是一种稳定排序算法
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此时第二大的数已经到了倒数第二位,后面就不需要比较了
网友评论