iOS 演算法總結

2021-09-26 04:20:20 字數 2371 閱讀 6731

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演算法總結 堆排序

堆 排序 很明顯,我們可以發現它們都是 二叉樹,如果觀察仔細些,還能看出它們都是 完全二叉樹。上圖中根節點是所有元素中最大的,右圖的根節點是所有元素中最小的。再仔細看看,發現左圖每個節點都比它的左右孩子要大,右圖每個節點都比它的左右孩子要小。這就是我們要講的堆結構。堆是具有下列性質的完全二叉樹 每個...