两个数字,1000个元素的有序数组和10个元素的无序数组,把他们整合成一个按照有序数组排序方式排序的有序数组

    技术2022-05-20  36

    public class YouXuWuXuPaiXu {

     /**  * 数组,有序,无序  */  public static void main(String[] args){  //有序数组  int[] ARR_YX = {9,8,7,5,3,1};//{1,23,45,56,67,78,89,90,100,109};  //无序数组  int[] ARR_WX = {590,2,59};  int[] arr = PaiXuChaRu(ARR_YX, ARR_WX);  int length = arr.length;  for(int i = 0; i < length; i ++){   System.out.println(arr[i]);  } }  public static int[] PaiXuChaRu(int[] arr_yx,int[] arr_wx){    int flag = 0;  int length_yx = arr_yx.length;  int length_wx = arr_wx.length;  int length = length_yx + length_wx;  if(arr_yx[0] > arr_yx[length_yx - 1]){   //有序数组是降序   flag = 1;  }else if(arr_yx[0] < arr_yx[length_yx - 1]){   //有序数组是升序   flag = -1;  }else{   //特殊情况   flag = 0;  }  arr_wx = PaiXu(arr_wx, flag);    int[] arr = new int[length];  arr = ChaRu(arr_yx, arr_wx, flag);    return arr; }  //根据有序数组排序方式将无序数组排序 public static int[] PaiXu(int[] arr, int flag){    int temp;    int length = arr.length;    for(int i = 0; i < length - 1; i ++){   for(int j = i + 1; j < length; j ++){    if(flag == 1){     if(arr[i] < arr[j]){      temp = arr[i];      arr[i] = arr[j];      arr[j] = temp;     }    }else if(flag == -1){     if(arr[i] > arr[j]){      temp = arr[i];      arr[i] = arr[j];      arr[j] = temp;     }    }else{     System.out.println("数组排序方式错误");    }   }  }    return arr; }  //把按照有序数组排序方式排序后的无序数组插入有序数组 public static int[] ChaRu(int[] arr_yx, int[] arr_wx, int flag){    int length = 0;    int length_yx = arr_yx.length;  int length_wx = arr_wx.length;  length = length_yx + length_wx;  int[] arr = new int[length];

      int temp = 0;  for(int i = 0; i < length_yx; i ++){   if(i < length_yx){    arr[i] = arr_yx[i];   }  }  for(int j = length_yx; j < length; j ++){   arr[j] = arr_wx[temp];   temp ++;  }    arr = PaiXu(arr, flag);    return arr; }}


    最新回复(0)