黑马程序员技术交流社区
标题:
有n个整数,使其前面各数顺序向后移m个位置,最后m个数...
[打印本页]
作者:
jeasonlzy
时间:
2015-3-15 14:16
标题:
有n个整数,使其前面各数顺序向后移m个位置,最后m个数...
有
n
个整数,使其前面各数顺序向后移
m
个位置,最后
m
个数变成最前面的
m
个数
大家看看这样写 对不对。。
public classYiDong {
public static void main(String[] args) {
int N =10;
int[] a = new int[N];
Scanner s = new Scanner(System.in);
System.out.println("请输入10个整数:");
for(int i=0; i<N; i++) {
a[i] = s.nextInt();
}
System.out.print("你输入的数组为:");
for(int i=0; i<N; i++) {
System.out.print(a[i] + " ");
}
System.out.print("\n请输入向后移动的位数:");
int m = s.nextInt();
int[] b = new int[m];
for(int i=0; i<m; i++) {
b[i] = a[N-m+i];
}
for(int i=N-1; i>=m; i--) {
a[i] = a[i-m];
}
for(int i=0; i<m; i++) {
a[i] = b[i];
}
System.out.print("位移后的数组是:");
for(int i=0; i<N; i++) {
System.out.print(a[i] + " ");
}
}
}
复制代码
作者:
zhqw_heima
时间:
2015-3-15 14:26
再第一行添加import java.util.Scanner,后面的代码都是对的,可以实现那个功能
作者:
fantacyleo
时间:
2015-3-15 15:04
通过一个简单的数学变换可以实现快速移位:
设原数组a有n个元素,每个元素向前移动m位,最后m个数变成最前面的m个数。则新建一个长度为n的空数组b,原数组元素a[i ]在数组b中的下标为:(i + m) % n
例如n=10, m=3,则a[0]在b中下标为(0+3) % 10 = 3,a[7]在b中下标为(7+3) % 10=0
这样移位操作只需要一条语句:
for(i=0;i<a.length;i++)
b[(i+m)%n]=a[i];
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2