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)