import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int[] arr1 = new int[num]; int[] arr2 = new int[num]; for (int i = 0; i <num; i++) { arr1[i] = sc.nextInt(); } for (int i = 0; i < num; i++) { arr2[i] = sc.nextInt(); } int index = 0; String type = "Insertion Sort"; for (int i = 0; i < num - 1; i++) { if (arr2[i]>arr2[i+1]){ index = i+1;//从此处开始无序 break; } } for (int i = index; i < num; i++) { if (arr1[i]!=arr2[i]){ type = "Merge Sort"; } } if (type.equals("Insertion Sort")){ for (int i = index; i >0; i--) { if (arr2[i]<arr2[i-1]){ int temp = arr2[i]; arr2[i] = arr2[i-1]; arr2[i-1] = temp; } } } else{//如果为归并排序,表示规模为index的数据已排好,下一个规模是index*2 index *= 2; for (int i = 0; i < num; i+=index) { int next = i+index>num? num: i+index; Arrays.sort(arr2,i,next); } } System.out.println(type); for (int i = 0; i < num; i++) { System.out.print(arr2[i]); System.out.print(" "); } } }
pta乙级 插入与归并
最新推荐文章于 2024-07-29 14:22:26 发布