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]);
      }
    }

解决方案 »

  1.   

    感谢楼上的帮助!
    不过 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.   

    1  取到过的数字全部在该位子全部用-1来代替 
    2  数字到头了可以用MOD的方法来循环  或者你可以统一用(i+step)%vLength,假如是-1则向前一位(还是-1的话 继续,注意用(i+1)%vLength的形式来代替i+1)
    3  这题还是用循环链表比较放方便 ,查到一个删一个 查到一个删一个程序我不写了  没工具
      

  3.   

    int a[] = new int[100];
    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;
    }没调试过 不敢保证是否正确