1. 不用中間變數,用兩種方法交換a 和 b的值
func arithmetic1 ()
func swap11(_ a: inout int,_ b: inout int)
func swap22(_ a: inout int,_ b: inout int)
func swap33(_ a: inout int,_ b: inout int)
2. 求兩個數的最大公約數
func arithmetic2 ()
var maxnum = 1
while a%b > 0
print("\(a)和\(b)的最大公約數是:\(maxnum)")
}
3. 氣泡排序
//氣泡排序1
func arithmetic3 ()
i += 1
}j += 1
}print(arr)
}//氣泡排序2
func arithmetic4 ()
i += 1}}
j += 1
}print(newarr)
}
5. 斐波那契數 遞迴法
func fibna(n:int) -> int
if n == 1 || n == 2
return fibna(n: n-1) + fibna(n: n-2)
}
6. 遞迴排序
let dataarr = [1,8,9,4,3,4,3,2,1]
study2(head_i: 0, end_j: dataarr.count - 1, dataarrget: dataarr)
func study2(head_i:int,end_j:int,dataarrget: [int])
var dataarr = dataarrget
var i = head_i,j = end_j;
while i <= j else
if dataarr[j] < dataarr[dataarr.count/2] else
if num == 2
}print(dataarr)
}
7 快速排序
var m = [2,3,5,7,1,4,6,15,5,2,7,9,10,15,9,17,12]
quicksort(a: &m, low: 0, high: m.count - 1)
func quicksort(a: inout [int], low: int, high: int)
var i = low
var j = high
let key = a[i]
while i < j
// 只要出現乙個比key小的數,將這個數放入左邊i的位置
a[i] = a[j]
// 從左邊開始比較,比key小的數字置不變
while i < j && a[i] <= key
// 只要出現乙個比key大的數,將這個數放入右邊j的位置
a[j] = a[i]
}a[i] = key // 將key放入i的位置,則左側數都比key小,右側數都比key大
quicksort(a: &a, low: low, high: i - 1) // 左遞迴
quicksort(a: &a, low: i + 1, high: high) // 右遞迴
}
8 經典漢諾塔
func study1()
print(result)
print(1<9
/*如果輸入3,列印
1 2 3
8 9 4
7 6 5
如果輸入4,列印
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7*/
func study() else
var thisindex = 0// 定義元素的index位置
if (r < (n - 2*k)) else if (r < (2*(n-2*k) - 1)) else if(r < (3*(n-2*k) - 2))else
arr[thisindex] = index// 替換相應位置的元素
r = r + 1//元素位置+1
}//列印輸出
for (index, value) in arr.enumerated() else else if value < 100 }}
}
iOS 排序演算法總結
查考 二叉樹借鑑上面乙個位址,把常用的一些排序演算法總結歸納一下,便於大家和自己的學習 一 插入排序 1 直接插入排序 直接插入排序基本思想 1 基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的...
iOS演算法總結 回顧
根據將排序記錄是否全部放置在記憶體中,將排序分為內排序和外排序,之前講的都是內排序,這裡總結一下,內排序分為四類 插入排序 交換排序 選擇排序和歸併排序。前幾篇介紹的7種演算法分別是各種分類的代表演算法 目前還沒有十全十美的排序演算法,即使是快速排序法,也只是在整體效能上優越,它也存在排序不穩定 需...
iOS演算法總結 堆排序
堆 排序 很明顯,我們可以發現它們都是 二叉樹,如果觀察仔細些,還能看出它們都是 完全二叉樹。上圖中根節點是所有元素中最大的,右圖的根節點是所有元素中最小的。再仔細看看,發現左圖每個節點都比它的左右孩子要大,右圖每個節點都比它的左右孩子要小。這就是我們要講的堆結構。堆是具有下列性質的完全二叉樹 每個...