排序演算法(Swift)

2021-09-19 05:45:43 字數 1147 閱讀 1115

電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大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 比較相鄰的元素,如果第乙個比第二個大,就交換他們兩...