Swift完成疾速排序算法的代碼示例。本站提示廣大學習愛好者:(Swift完成疾速排序算法的代碼示例)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift完成疾速排序算法的代碼示例正文
思想
疾速排序作為分治代表,通常完成由三步
1.數據中選擇一個元素作為”基准”(pivot),通常選取最後一個元素;
2.分區(partition) 一切小於”基准”的元素,都移到”基准”的右邊;一切大於”基准”的元素,都移到”基准”的左邊。分區操作完畢後,基准元素所處的地位就是最終排序後它的地位。
3.對“基准”右邊和左邊的兩個子集,不時反復第一步和第二步,直到一切子集只剩下一個元素為止。
完成:
func quickSort(inout a: [Int], l: Int, r: Int) {
if l < r {
var i = l,
j = r,
x = a[i]
while i < j && a[j] >= x {
j -= 1
}
if i < j {
a[i] = a[j]
i += 1
}
while i < j && a[i] < x {
i += 1
}
if i < j {
a[j] = a[i]
j -= 1
}
a[i] = x
quickSort( & a, l: l, r: i - 1)
quickSort( & a, l: i + 1, r: r)
}
}
var b = [8, 7, 6, 5, 4, 3, 2, 1]
quickSort( & b, l: 0, r: 7)
print(b)