import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 将给定数组排序
* @param arr int整型一维数组 待排序的数组
* @return int整型一维数组
*/
public int[] MySort (int[] arr) {
// write code here
// 快速排序,解题思路:
// 1.双指针,分别指向left/right
// 2.取第一个元素值cur,从最右边开始如果大于cur就right--
// 遇到第一个小于的值就把left 和 right交换
// 3.继续从左边比较,左边的值是否都小于cur,就left++
// 遇见大于等于cur的值,就把left和right 交换
// 当不满足left < right 时候,说明cur就位置他应该存在的位置
// 然后继续递归 begin,left-1 和 left+1,end
quickSort(arr, 0, arr.length-1);
return arr;
}
private void quickSort(int[] arr, int begin, int end) {
if (begin >= end) {
return;
}
int left = begin;
int right = end;
int cur = arr[left];
while (left < right) {
while (left < right && arr[right] >= cur) {
right--;
}
if (left < right) {
swap(arr, left, right) ;
}
while (left < right && arr[left] <= cur) {
left++;
}
if (left < right) {
swap(arr, left, right) ;
}
}
quickSort( arr, begin, left - 1);
quickSort( arr, left + 1, end);
}
private void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}