春招修仙系列 —— 手撕代码之归并排序

手写代码:

在这里插入图片描述

验证:

import java.util.Arrays;

class Solution {
  public void function(int[] arr, int start, int end) {
    if (start >= end) return;
    int mid = (start +end)>>1;
    function(arr,start,mid);
    function(arr,mid+1,end);
    sort(arr,start,mid,end);
  }

  private void sort(int[] arr, int start, int mid, int end) {
    int[] temp = new int[end - start + 1];
    int i = start,j=mid+1,k=0;
    while(i<= mid && j<= end){
      if(arr[i] <= arr[j]){
        temp[k++] = arr[i++];
      }else{
        temp[k++] = arr[j++];
      }
    }
    while(i<=mid){
      temp[k++] = arr[i++];
    }
    while(j<=end){
      temp[k++] = arr[j++];
    }
    for(int n = 0;n<temp.length;n++){
      arr[n+start] = temp[n];
    }
  }

  public static void main(String[] args) {
    int[] arr = new int[]{1,3,2,0,0,0,-1,-1,6,7,8,6,7};
    new Solution().function(arr,0,arr.length-1);
    System.out.println(Arrays.toString(arr));
  }
}


执行结果:

[-1, -1, 0, 0, 0, 1, 2, 3, 6, 6, 7, 7, 8]

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/Kirito19970409/article/details/86548217