//实现的一个算法:线性表分成两部分后,进行两部分的倒置
分析:通过从空间复杂度与时间复杂度两方面考虑进行编写
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]);
}
}
}