快排,采用分治法。
void my_swap(vector<int>&v,int a,int b) {
int temp = v[a];
v[a] = v[b];
v[b] = temp;
}
void quickSort(vector<int>&v, int begin, int end) {
if (end >= begin) {
//随机快排,减少原始数据排列的影响
int ran = rand() % (end - begin + 1) + begin;
my_swap(v, begin, ran);
int temp = v[begin];
int i = begin, j = end;
while (j > i) {
while (v[j] > temp) {
j--;
}
while (i <= j && v[i] <= temp) {
i++;
}
my_swap(v, i, j);
}
my_swap(v, i, j);
quickSort(v, begin, i - 1);
quickSort(v, i + 1, end);
}
}