归并排序

发布时间 2023-08-19 09:57:25作者: 郑择徽

public static void merge(int[]arr,int low,int middle,int high){
       int[]temp=new int[high-low+1];
       int i=low;                              //第一个数组需要遍历的下标
       int j=middle+1;                    //第二个数组
       int index=0;
       while(i<=middle && j<=high){
             if(arr[i]<=arr[j]){
             temp[index]=arr[i];
             i++;
             index++;
             }else{
                  temp[index]=arr[j];
                  j++;
                 index++;
            }
      }
     while(i<=middle){
           temp[index]=arr[i];
           i++;
           index++;
     }
    while(j<=high){
          temp[index]=arr[j];
          j++;
          index++;
    }
    for(int k=0;k<temp.length;k++){          //把临时数组中的元素放回
           arr[low+k]=temp[k];
    }
}