剑指offer之partition算法
1 问题
partition 算法:
从无序数组中选出枢轴点 pivot,然后通过一趟扫描,以 pivot 为分界线将数组中其他元素分为两部分,使得左边部分的数小于等于枢轴,右边部分的数大于等于枢轴(左部分或者右部分都可能为空),最后返回枢轴在新的数组中的位置。
如果原始数组为[5,9,2,1,4,7,5,8,3,6],那么整个处理的过程如下图
Partition 可不只用在快速排序中,还可以用于 Selection algorithm(在无序数组中寻找第K大的值)中.
2 代码实现
我们按照算法需求简单实现如下
void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } int partition(vector
共有 0 条评论