设有n个人依围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…, * 如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序;要求用java实现。
public class demo2 {
public static void main(String[] args) {
sort(10,3).forEach(System.out::println);
}
// 封装成方法
public static List sort(int n, int m){
LinkedList<Integer> list = new LinkedList<>();
for (int i=1;i<=n;i++){
list.add(i);
}
int index=0; // 要删除的下标索引
ArrayList<Integer> arrayList = new ArrayList<>();
while (list.size()>0){
// 主要思想的一行
index=(index+m-1)%list.size();
arrayList.add(list.remove(index));
}
return arrayList;
}
}