Swift实现快速排序算法的代码示例
思想
快速排序作为分治代表,通常实现由三步
1.数据中选择一个元素作为”基准”(pivot),通常选取最后一个元素;
2.分区(partition)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。分区操作结束后,基准元素所处的位置就是最终排序后它的位置。
3.对“基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
实现:
funcquickSort(inouta:[Int],l:Int,r:Int){
ifl<r{
vari=l,
j=r,
x=a[i]
whilei<j&&a[j]>=x{
j-=1
}
ifi<j{
a[i]=a[j]
i+=1
}
whilei<j&&a[i]<x{
i+=1
}
ifi<j{
a[j]=a[i]
j-=1
}
a[i]=x
quickSort(&a,l:l,r:i-1)
quickSort(&a,l:i+1,r:r)
}
}
varb=[8,7,6,5,4,3,2,1]
quickSort(&b,l:0,r:7)
print(b)