class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 将给定数组排序
* @param arr int整型vector 待排序的数组
* @return int整型vector
*/
vector<int> MySort(vector<int>& arr) {
// write code here
//sort(arr.begin(),arr.end());
int n = arr.size();
for(int i = 0;i < n;i++){
for(int j = n-1; j > i;j--){
if(arr[j] < arr[i]){
swap(arr[i],arr[j]);
}
}
}
return arr;
}
};
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 将给定数组排序
* @param arr int整型vector 待排序的数组
* @return int整型vector
*/
vector<int> MySort(vector<int>& arr) {
// write code here
//sort(arr.begin(),arr.end());
quick_sort(arr, 0, arr.size()-1);
return arr;
}
void quick_sort(vector<int>& arr,int l,int r) {
// write code here
//sort(arr.begin(),arr.end());
if(l <r ){
int m = partition(arr, l, r);
quick_sort(arr,l,m-1);
quick_sort(arr, m + 1, r);
}
}
int partition(vector<int>&arr,int l,int r){
int tag = arr[l];
//找到一个tag,使得tag左边的数都比tag小,右边的数都比tag大
while(l < r){
while(l < r && arr[r] >= tag){
r--;
}
if(l < r){//找到tag右边比tag小的
arr[l] = arr[r];
}
while(l < r && arr[l] < tag){
l++;
}
if(l < r){//找到tagz左边边比tag大的,交换
arr[r] = arr[l];
}
}
arr[l] = tag;
return l;
}
};