版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linyixiao88/article/details/80046170
1 快速排序
public class Solution {
public void sort(int[] nums){
if (nums == null || nums.length == 0) return;
quickSort(nums, 0, nums.legnth-1)
}
private void quickSort(int[] nums, int start ,int end ) {
if(start >= end) return ;
int left = start, right= end;
// 枢轴 get value not index
int pivot = nums[(left + right )/2];
while (left <= right){
while (left<= right && nums[left] < pivot){
left ++;
}
while ( left <= right && nums[right] > pivot){
right--;
}
if (left <= right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left ++;
right --;
}
}
quickSort(nums[], start, right);
quickSort(nums[], left, end);
}
}
2 归并排序
public class Solution {
public void sort(int[] nums){
if (nums == null || nums.length == 0) return;
int[] temp = new int [nums.length];
mergeSort(nums, 0, nums.legnth - 1, temp);
}
//分
private void mergeSort(int[] nums, int start, int end, int[] temp){
if(start >= end ) return ;
mergeSort(nums, start, (start + end)/2, temp);
mergeSort(nums, (start + end)/2+1, end, temp);
merge(nums, start, end, temp);
}
//合
private void merge(int[] nums, int start, int end , int[] temp){
int mid = (start + end)/2;
int leftIndex = start;
int rightIndex= mid + 1;
int index = leftIndex;
while(leftIndex <= mid && rightIndex <= end){
if(nums[leftIndex] < nums[rightIndex]){
temp[index++] = nums[leftIndex++];
}
else{
temp[index++] = nums[rightIndex++];
}
}
while(leftIndex <= mid){
temp[index++] = nums[leftIndex++];
}
while(rightIndex <= end){
temp[index++] = nums[rigghtIndex++];
}
for(int i=0; i<end;i++){
nums[i] = temp[i];
}
}
}