//实现的一个算法:线性表分成两部分后,进行两部分的倒置
分析:通过从空间复杂度与时间复杂度两方面考虑进行编写
package Day20; //此时节省的是空间复杂度 import java.util.*; public class Test1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("输入m值"); int m=sc.nextInt(); System.out.println("输入n值"); int n=sc.nextInt(); int[] arr=new int[m+n]; System.out.println("输入数组"); for(int i=0;i<(m+n);i++) { arr[i]=sc.nextInt(); } exchange(arr,m,n); } public static void exchange(int[] arr,int m,int n) { for(int i=0;i<n;i++) { int b=arr[m+i]; for(int j=m;j>=1;j--) { arr[j+i]=arr[j+i-1]; } arr[i]=b; } for (int i=0;i<arr.length;i++) { System.out.print(arr[i]+" "); } } }
package Day20; //节省了时间复杂度,但是占用很大的空间复杂度(m+n) import java.util.*; public class Test2 { /** * @param args */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入m值"); int m=sc.nextInt(); System.out.println("输入n值"); int n=sc.nextInt(); int[] arr=new int[m+n]; System.out.println("输入数组"); for(int i=0;i<(m+n);i++) { arr[i]=sc.nextInt(); } exchange(arr,m,n); } public static void exchange(int[] arr,int m,int n) { int[] arr2=new int[arr.length]; for(int i=0;i<m;i++) { arr2[n+i]=arr[i];//实现后半部分,m个前边,n个后边 } for(int j=0;j<n;j++) { arr2[j]=arr[m+j];//实现前部分 } for(int i=0;i<arr2.length;i++) { System.out.print(arr2[i]); } } }