var unnumber = [23,76,42,9,7,0,1,37,4,2,89,23,45,56,87,65,20,15,23,15,17]
var number = [19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]
var number2 = [19,18]
var number1 = [19]
//to swap two number
func swapValue(inout left:Int, inout _ right:Int) {
let temp = left
left = right
right = temp
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Insert Sort
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Straight Insertion Sort
func insertSort(input:[Int]) -> [Int] {
var output = input
var temp = 0
for i in 1..<output.count {
if output[i]
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Quick Sort
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Bubble Sort
func bubbleSort(input:[Int]) -> [Int] {
var output = input
for var i = 0; i {
for var j = 0; j 1; j++ {
if output[j] > output[j + 1] {
swapValue(&output[j], &output[j + 1])
}
}
}
return output
}
unnumber.sort()
bubbleSort(unnumber)
bubbleSort(number)
bubbleSort(number1)
bubbleSort(number2)
//Quick Sort
func quickSort(input:[Int]) -> [Int] {
var output = input
//递归,其实可以用闭包来实现,这里为了方便理解,使用嵌套函数来表示
func quicksort(inout input:[Int], _ low:Int, _ high:Int) {
guard low else { return }//递归完成
let pivotkey = input[low]
var left = low
var righ = high
while left < righ {
while left = pivotkey { --righ }
input[left] = input[righ]
while left left }
input[righ] = input[left]
}
//移动轴的位置,使得轴左边的数总比右边的数小
input[left] = pivotkey
quicksort(&input, low, left - 1)
quicksort(&input, left + 1, high)
}
quicksort(&output, 0, output.count - 1)
return output
}
unnumber.sort()
quickSort(unnumber)
quickSort(number)
quickSort(number1)
quickSort(number2)