import java.util.*; public class A { public static void main(String [] args) { int a[]={3,7,6,12,1,5,-1,9}; ArrayList<Integer>ai=new ArrayList<Integer>(); for(int i=0;i<a.length;i++) ai.add(a[i]); int num=2; int index=0; while(ai.size()>0) {
想起了数据结构里“猴子选大王”的问题……^_^ public class Test { /* *@param arr //数组 *@param n //隔几个输出一个 */ static void print(int[] arr, int n) { int num = arr.length ; //数组内还有几个数没被输出 int count = n - 1 ; //当前报数到几了 int i = -1 ;
呵呵,BabyWhite(BabyWhite) Java不支持指针啊…… 如果是用指针(链表)来实现ArrayList可能效率会高上好多……^_^ 特别是对于很大的数组……java中用引用来模拟指针的作用。其实用链表会更快一点? 这个不一定,主要取决步长(num的值)的大小,如果num很小,用链表也许快一点。 java中有链表的。LinkedList. import java.util.*; public class A { public static void main(String [] args) { int a[]={3,7,6,12,1,5,-1,9}; LinkedList<Integer>ai=new LinkedList<Integer>(); for(int i=0;i<a.length;i++) ai.add(a[i]); int num=2; int index=0; while(ai.size()>0) {
public class A
{
public static void main(String [] args)
{
int a[]={3,7,6,12,1,5,-1,9};
ArrayList<Integer>ai=new ArrayList<Integer>();
for(int i=0;i<a.length;i++)
ai.add(a[i]);
int num=2;
int index=0;
while(ai.size()>0)
{
System.out.println(ai.remove(index));
if(ai.size()==0)break;
index=(index+num)%ai.size();
}
}
}
public class Test
{
/*
*@param arr //数组
*@param n //隔几个输出一个
*/
static void print(int[] arr, int n)
{
int num = arr.length ; //数组内还有几个数没被输出
int count = n - 1 ; //当前报数到几了
int i = -1 ;
while(num>0)
{
//如果当前位置的数没被输出则报数
if(arr[++i] != 0) ++count ;
//找到了报n的家伙
if(count >= n)
{
//输出这个数并将它设置为最大数
//表示其被输出了,不用再报数了
System.out.print(arr[i] + " ") ;
arr[i] = 0 ;
--num ;
count = 0 ;
}
//如果到了数组最后则回到开头,形成环
if(i >= arr.length - 1) i = -1 ;
}
}
public static void main(String[] args)
{
int arr[] = {3, 7, 6, 12, 1, 5, -1, 9};
print(arr, 3);
System.exit(0);
}
}
上面是认识所有数中不会出现0才这样写的……
if(arr[++i] != 0)
arr[i] = 0 ; //设为0,而不是什么所谓的“最大数”………………
不知道效率怎么样……^_^Java不支持指针啊……
如果是用指针(链表)来实现ArrayList可能效率会高上好多……^_^
特别是对于很大的数组……
Java不支持指针啊……
如果是用指针(链表)来实现ArrayList可能效率会高上好多……^_^
特别是对于很大的数组……java中用引用来模拟指针的作用。其实用链表会更快一点?
这个不一定,主要取决步长(num的值)的大小,如果num很小,用链表也许快一点。
java中有链表的。LinkedList.
import java.util.*;
public class A
{
public static void main(String [] args)
{
int a[]={3,7,6,12,1,5,-1,9};
LinkedList<Integer>ai=new LinkedList<Integer>();
for(int i=0;i<a.length;i++)
ai.add(a[i]);
int num=2;
int index=0;
while(ai.size()>0)
{
System.out.println(ai.remove(index));
if(ai.size()==0)break;
index=(index+num)%ai.size();
}
}
}