1.选择排序
//选择排序
func rankSelect(_ array:Array<Int>) -> Array<Int>{
var arrM = array
var temp:Int
for i in 0..<arrM.count {
for j in (i+1)..<arrM.count {
if arrM[i] > arrM[j] {
temp = arrM[i]
arrM[i] = arrM[j]
arrM[j] = temp
}
}
}
return arrM
}
let arr:Array = [3,2,4,1]
let rankedArr = rankSelect(arr)
print(rankedArr)
打印结果:
[1, 2, 3, 4]
2.冒泡排序
//MARK:7.冒泡排序
func rankBubble(_ array:Array<Int>) -> Array<Int>{
var arrM = array
var temp:Int
for i in 0..<arrM.count {
for j in 0..<(arrM.count-1-i) {
if arrM[j] > arrM[j+1] {
temp = arrM[j]
arrM[j] = arrM[j+1]
arrM[j+1] = temp
}
}
}
return arrM
}
let arr = [3,5,2,1,4]
let rankedArr = rankBubble(arr)
print(rankedArr)
打印结果:
[1,2,3,4,5]
3.快速排序
//MARK:8.快速排序
func rankFast(_ array:inout Array<Int>){
var left = 0
var right = array.count - 1
if left == right || array.count < 2{
return
}
var pivotValue = array[0]
var temp:Int
//是否是和右边的比
var isCopareRight = true
while left != right {
if isCopareRight {
//和右边的数比
if pivotValue > array[right] {
array[left] = array[right]
left += 1
isCopareRight = false
}else{
right -= 1
}
}else{
//和左边的数比 [3,4,1,0,5]
if pivotValue < array[left] {
array[right] = array[left]
right -= 1
isCopareRight = true
}else{
left += 1
}
}
}
array[left] = pivotValue
var childArr1 = Array(array[0..<left])
var childArr2 = Array(array[(left+1)..<array.count])
rankFast(&childArr1)
rankFast(&childArr2)
array = childArr1 + [array[left]] + childArr2
}
var arr = [6,7,1,5,4,2,3,4,56,0,23]
rankFast(&arr)
print(arr)
打印结果:
[0, 1, 2, 3, 4, 4, 5, 6, 7, 23, 56]
Program ended with exit code: 0