Swift实现快速排序算法的代码示例
更新时间:2016年07月06日 10:21:21 作者:梁同桌
这篇文章主要介绍了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)
相关文章
Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
这篇文章主要介绍了Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍,本文分别给出了各种手势的实现代码,需要的朋友可以参考下2015-01-01
Swift使用CollectionView实现广告栏滑动效果
这篇文章主要为大家详细介绍了Swift使用CollectionView实现广告栏滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-06-06
Flutter iOS开发OC混编Swift动态库和静态库问题填坑
这篇文章主要为大家介绍了Flutter iOS OC 混编 Swift动态库和静态库问题填坑详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-07-07


最新评论