public class TestMyArray {
private int[] in;
private Set<String> set;
public TestMyArray(int l) {
int[] sin = {1 , 2 , 2 , 3 , 4 , 5};
set = new HashSet<String>() ;
in = sin;
}
public void getlist() {
int langth = in.length;
list(langth, langth);
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println(set.size());
}
public void list(int length, int alllangth) {
if (length == 1) {
// print();
return;
}
if (length == 2) {
checkprint();
if(changpn(alllangth - length, alllangth))
checkprint();
return;
}
for (int i = 0; i < length; i++) {
list(length - 1, alllangth);
changpn(alllangth - length, alllangth);
}
}
public void checkprint(){
print();
}
public void print() {
StringBuffer bu = new StringBuffer() ;
for (int i = 0; i < in.length; i++)
bu.append(in[i]) ;
set.add(bu.toString()) ;
}
public boolean changpn(int index, int alllangth) {
int st = index + 1;
for(int i = st ; i < alllangth ; i ++ ){
for(int j = i + 1; j < alllangth ; j ++){
if(in[i] > in[j]){
int va = in[i];
in[i] = in[j] ;
in[j] = va ;
}
}
}
int temp;
for (temp = index + 1; temp < alllangth; temp++) {
if (in[index] < in[temp]) {
int v = in[index];
in[index] = in[temp];
in[temp] = v;
break;
}
}
if(temp == alllangth) return false ;
return true;
}
public static void main(String[] args) {
TestMyArray tt = new TestMyArray(5);
long o = new Date().getTime();
tt.getlist();
long n = new Date().getTime();
System.out.println(n - o);
}