题目描述:
给定一个整数数组 nums,将该数组升序排列。
示例 1:
输入:[5,2,3,1]
输出:[1,2,3,5]
示例 2:
输入:[5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
提示:
1 <= A.length <= 10000
-50000 <= A[i] <= 50000
插入排序:
class Solution {
public int[] sortArray(int[] nums) {
for (int i = 1; i < nums.length; i++) {
int tem = nums[i];
int j = 0;
for (j = i - 1; j >= 0; j--) {
if(tem >= nums[j]){
break;
}else {
nums[j + 1] = nums[j];
}
}
nums[j + 1] = tem;
}
return nums;
}
}
使用归并排序
class Solution {
public int[] sortArray(int[] nums) {
sortArray(nums,0,nums.length - 1);
return nums;
}
public static void merge(int nums[],int left,int right,int rightbound){
int result[] = new int[rightbound - left + 1];
int temleft = left;
int index = 0;
int tem = right;
while (left < tem && right <= rightbound) {
if(nums[left] < nums[right]){
result[index ++] = nums[left ++];
}else {
result[index++] = nums[right ++];
}
}
while (left < tem) {
result[index ++] = nums[left ++];
}
while (right <= rightbound) {
result[index ++] = nums[right ++];
}
for (int i = 0; i < result.length; i++) {
nums[temleft + i] = result[i];
}
}
public static void sortArray(int[] nums,int left,int right) {
if(left >= right){
return ;
}
int mid = (left + right) / 2;
sortArray(nums, left, mid);
sortArray(nums, mid + 1, right);
merge(nums, left, mid + 1, right);
}
}