⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arrange.java

📁 一款少见的用swt写的彩票软件
💻 JAVA
字号:
package com.dc.test;

import java.math.*;
import java.util.*;

public class Arrange{

	private int[] index;//用于存储需要全排列的数组的下标的成员变量。
	private int n;//表示待排数组的元素个数。
	private long numLeft;//用于存储剩余排列序列个数的成员变量。
	private long total;//用于存储排列序列总数的成员变量。
	
	public Arrange(int n){
		this.n=n;
		reset();//调用重置
	}
	
	public void reset(){
		//初始化数组index。
		index=new int[n];
		for(int i = 0; i < index.length; i++){
			index[i] = i;
		}
		
		//初始化numLeft,开始时numLeft应该为n!.
		total=1;
		for(int i = n;i>1;i--){
			total*=i;
		}
		numLeft=total;
	}

	//判断是否排序结束
	public boolean hasMore(){
		return numLeft > 0;
	}


	//得到下一个排列序列
	public int[] getNext(){

		if (numLeft==total){
			numLeft -=1;
			return index;
		}

		int j = index.length - 2;
		while (index[j] > index[j + 1]){
			j--;
		}

		int k = index.length - 1;
		while (index[j] > index[k]){
			k--;
		}
		
		int temp;
		temp = index[k];
		index[k] = index[j];
		index[j] = temp; 

		int r = index.length - 1;
		int s = j + 1;

		while (r > s){
			temp = index[s];
			index[s] = index[r];
			index[r] = temp;
			r--;
			s++;
		}

		numLeft-=1;
		return index;

	}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -