实现代码:
//以第一个元素为主元 //如果以最后一个元素为主元,指针的初始化以及返回情况有些不同 int partition(vector&data, int l, int r) { int main = 0; int i = 0; //维护主元左边的值的指针 int j = 0; //迭代器 if(l >= r) return l; i = l; main = data[l]; for(j = l+1; j <= r; j++) { if(data[j] <= main) { i++; swap(data[i],data[j]); //i,j如果(i++)之前是相邻的,那么其实是没有交换 } } swap(data[i], data[l]); return i; } void quick_sort(vector &data, int l, int r) { if(l < r) { int q = partition(data, l, r); quick_sort(data, l, q - 1); quick_sort(data, q + 1, r); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)