int[] buf = new int[100];
for (int i = 0; i < buf.length; ++i) {
buf[i] = i;
} int step = 5;
for (int i = 0; i < step; ++i) {
for (int j = 0; j < buf.length / step; ++j) {
System.out.println(buf[i + step * j]);
}
}
for (int i = 0; i < buf.length; ++i) {
buf[i] = i;
} int step = 5;
for (int i = 0; i < step; ++i) {
for (int j = 0; j < buf.length / step; ++j) {
System.out.println(buf[i + step * j]);
}
}
不过 for (int i = 0; i < buf.length; ++i) {
buf[i] = i;
}
这一句是让输出结果变成游标的输出,还有我的意思是取出来的数就取出来了不能还在数组里占着位置例如{1,2,3,4,5,6}以步长3来取,结果是{1,4,2,6,3,5}。而用楼主的方法取出来的是{1,4,2,5,3,6}
2 数字到头了可以用MOD的方法来循环 或者你可以统一用(i+step)%vLength,假如是-1则向前一位(还是-1的话 继续,注意用(i+1)%vLength的形式来代替i+1)
3 这题还是用循环链表比较放方便 ,查到一个删一个 查到一个删一个程序我不写了 没工具
for(int i=0;i<100;i++){
a[i] = i+1;
}
int b[] = new int[100];
int index=0;//控制循环次数
length=100;
int step = 3;for(int i=0;i<length;i++){
while(a[index%length]==-1) {
index = (index +1)%length;
}
//选择你要的数字
b[i]=a[index];
a[index]=-1;
index = (index + step)%length;
}没调试过 不敢保证是否正确