稳定的快排
Posted mximo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了稳定的快排相关的知识,希望对你有一定的参考价值。
int stable_partition(vector<int>& a, int s, int e) { if (s >= e) return s; vector<int> b(a.size()); int pa1, pa2, pb1, pb2; pa1 = pb1 = s; pa2 = pb2 = e; int start = s, end = e; int key = a[s]; while (pa1 < pa2) { while (pa1 < pa2 && a[pa1] < key) { a[s++]= a[pa1++]; } while (pa1 < pa2 && a[pa2] >= key) { a[e--]= a[pa2--] ; } if (pa1 < pa2) { b[pb1++]= a[pa1++]; b[pb2--]= a[pa2--] ; } } int i; for (i = pb2 + 1; i <= end; i++) a[s++] = b[i]; int idx = pa1; for (i = start; i < pb1; i++) a[s++] = b[i]; return idx; }
以上是关于稳定的快排的主要内容,如果未能解决你的问题,请参考以下文章