1、冒泡排序 时间复杂度为O(n²)
func bubbleSort() -> Void {
let list = NSMutableArray.init(array: [1,4,7,13,33,3,5]);
for i in 0..<list.count-1 {//进行六轮冒泡
for j in 0..<list.count-1-i {
let a = list[j] as! NSInteger;
let b = list[j+1] as! NSInteger
if a<b {
list.exchangeObject(at: j, withObjectAt: j+1);
}
}
}
print(list);
}
2、选择排序 时间复杂度为O(n²)
func selectSort() -> Void {
let list = NSMutableArray.init(array: [4,1,7,13,33,3,5]);
for i in 0..<list.count{
var minIndex = i;//默认第0个数字是最小数字,0为最小索引
for j in i+1..<list.count {//假定4为最小数字,从第1个开始遍历
let a = list[j] as! NSInteger;
let b = list[minIndex] as! NSInteger;
if a<b {//
minIndex = j;//如果a比默认的最小数字还小,更新最小索引
}
}
//每轮获取到最小值的索引后,进行索引值交换
list .exchangeObject(at: i, withObjectAt: minIndex);
}
print(list);
}
3、插入排序 时间复杂度为O(n²)
func insertSort() -> Void {
let list = NSMutableArray.init(array: [4,1,7,13,33,3,5]);
let sortList:NSMutableArray = NSMutableArray.init();
for i in 0..<list.count {
let a = list[i] as! NSInteger;
sortList.add(a);
for j in 0..<sortList.count {
let b = sortList[j] as! NSInteger;
if a<b {//新加的元素在数组末位,如果小于数组中的元素,则交换位置
sortList.exchangeObject(at: j, withObjectAt:sortList.count-1);
}
}
}
print(sortList);
}