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)