该题实现一个快速排序即可,注意vector是一个引用,否则函数调用后并不能改变vector
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 将给定数组排序
* @param arr int整型vector 待排序的数组
* @return int整型vector
*/
vector<int> MySort(vector<int>& arr) {
// write code here
quick_sort(arr,0,arr.size() - 1);
return arr;
}
void quick_sort(vector<int>& a, int left, int right)
{
if(left >= right)
return;
int pivot = parti(a,left,right);
quick_sort(a,left,pivot-1);
quick_sort(a,pivot+1,right);
}
int parti(vector<int>& a, int left, int right)
{
int i = left;
int j = right;
int tmp = a[left];
while(i < j)
{
while(i<j && a[j] >= tmp)
j--;
while(i<j && a[i] <= tmp)
i++;
if(i < j)
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = tmp;
return i;
}
};
京公网安备 11010502036488号