電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間
。這是乙個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。
func
bubblesort
(_ arr :
array
<
int>)-
>
array
<
int>
num = num +
1print
(num)}}
return array
}
//選擇排序
func
selectionsort
(_ arr :
array
<
int>)-
>
array
<
int>
}//m是每輪內部迴圈後標記最小數的腳標,i是要插入的順序,如果不等就說明該輪需要替換兩個數的位置.如果相等就說明當前迴圈最前的就是最小的數字,不需要替換位置.
if i != m
}return array;
}
關鍵點在於m
是標記每輪最小數的腳標,i
是當前已經排序的當前內部迴圈獲得最小數要插入的位置(當前輪最小腳標).
func
insertionsort
(_ arr:
[int])
->
[int]}
return array
}
func binarysearchcomparable
>
(_ a:
[t], key: t)
->
int?
else
if a[midindex]
< key
else
}return
nil}
注意:這邊查詢的前提是陣列已經是有序的,並且不能有重複數字. Swift 排序演算法
本文採用陣列實現。排序演算法 時間複雜度 空間複雜度 是否穩定 直接插入排序 o n 2 o 1 是希爾排序 o nlogn o 1 否氣泡排序 o n 2 o 1 是選擇排序 o n 2 o 1 否歸併排序 o nlogn o n 是快速排序 o nlogn o logn 否堆排序 o nlogn...
Swift 選擇排序演算法
每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。找到第一小 大 的元素,放在第乙個位置 找到從第二個元素到末尾的元素中第二下 大 的元素,放入第二個位置 以此類推 import foundation 選擇排序 var unsortedlis...
swift演算法之排序 (一)氣泡排序
1 概述 氣泡排序是一種簡單的演算法,是指重複遍歷需要排序的元素列,一次比較兩個相鄰的元素,如果他們的順序 如從大到小 首字母a z等 錯誤就把他們交換過來,遍歷的目的是重複的進行指導沒有相鄰元素需要交換 即該元素列已經排序完成。2 演算法原理 1 比較相鄰的元素,如果第乙個比第二個大,就交換他們兩...