`
- 浏览:
96932 次
- 来自:
...
-
-
packageBeanUtil;
-
importjava.util.ArrayList;
-
importjava.util.List;
-
importcom.work.core.exception.OurException;
-
-
-
publicclassCopy_2_of_StatisAnyThree{
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
publicstaticvoidmain(String[]args){
-
Copy_2_of_StatisAnyThrees=newCopy_2_of_StatisAnyThree();
- s.printAnyThree();
- }
-
-
-
publicvoidprintAnyThree(){
-
int[]num=newint[]{1,2,3,4,5,6};
-
print(combine(num,3));
- }
-
-
-
publicListcombine(int[]a,intm){
-
intn=a.length;
-
if(m>n){
-
thrownewOurException("错误!数组a中只有"+n+"个元素。"+m+"大于"+2+"!!!");
- }
-
Listresult=newArrayList();
-
int[]bs=newint[n];
-
for(inti=0;i<n;i++){
-
bs[i]=0;
- }
-
-
for(inti=0;i<m;i++){
-
bs[i]=1;
- }
-
booleanflag=true;
-
booleantempFlag=false;
-
intpos=0;
-
intsum=0;
-
-
do{
-
sum=0;
-
pos=0;
-
tempFlag=true;
- result.add(print(bs,a,m));
-
for(inti=0;i<n-1;i++){
-
if(bs[i]==1&&bs[i+1]==0){
-
bs[i]=0;
-
bs[i+1]=1;
- pos=i;
-
break;
- }
- }
-
-
for(inti=0;i<pos;i++){
-
if(bs[i]==1){
- sum++;
- }
- }
-
for(inti=0;i<pos;i++){
-
if(i<sum){
-
bs[i]=1;
-
}else{
-
bs[i]=0;
- }
- }
-
-
for(inti=n-m;i<n;i++){
-
if(bs[i]==0){
-
tempFlag=false;
-
break;
- }
- }
-
if(tempFlag==false){
-
flag=true;
-
}else{
-
flag=false;
- }
-
}while(flag);
- result.add(print(bs,a,m));
-
returnresult;
- }
-
privateint[]print(int[]bs,int[]a,intm){
-
int[]result=newint[m];
-
intpos=0;
-
for(inti=0;i<bs.length;i++){
-
if(bs[i]==1){
- result[pos]=a[i];
- pos++;
- }
- }
-
returnresult;
- }
-
privatevoidprint(Listl){
-
for(inti=0;i<l.size();i++){
-
int[]a=(int[])l.get(i);
-
for(intj=0;j<a.length;j++){
-
System.out.print(a[j]+"\t");
- }
- System.out.println();
- }
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
所使用的算法应该是效率最高的算法,而且这两个类都只是对需要排列组合的数组的下标进行处理,所以能对任何类型的数组进行排列组合。
主要为大家详细介绍了高效的java版排列组合算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
给出了字典排序求取全排列的算法实现,JAVA
虽然冒泡排序的实现方法非常简单,但是它的效率并不高,特别是对于大规模数据的排序。 然而,我最近发现了一种对冒泡排序进行优化的方法。这种方法的基本思路是在每次循环中增加一个标志位,用于记录本次循环是否...
本书旨在探讨如何优化算法效率,详细阐述了经典算法和特殊算法的实现、应用技巧和复杂度验证过程,内容由浅入深,能帮助读者快速掌握复杂度适当、正确率高的高效编程方法以及自检、自测技巧,是参加ACM ICPC、Google...
D_Apriori算法利用逐步逼近的思想越级产生频繁K-项集,引入二分法获取每次需要产生频繁项集中集合的长度,结合排列算法或者取并集算法直接产生频繁K-项集。通过算例分析与实验验证结果表明,在数据量、支持度和事物...
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 要求: 必须采用顺序存储结构。 必须按关键字大小有序排列。...
二分查找效率更高,但是必须是已经排好序的列表元素集合。 一:顺序查找 顺序查找是从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果,或者直到列表的结尾都没有找到想要找的元素。 代码如下: ...
随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否...
藉由加強與優化許多函數及演算法,Notepad++ 致力於減少世界二氧化碳的排放。當使用較少的 CPU 功率,降低電腦系統能源消耗,Notepad++ 間接造就了綠化的環境。多虧它的輕巧與執行效率,Notepad++ 可完美地取代微軟...
藉由加強與優化許多函數及演算法,Notepad++ 致力於減少世界二氧化碳的排放。當使用較少的 CPU 功率,降低電腦系統能源消耗,Notepad++ 間接造就了綠化的環境。多虧它的輕巧與執行效率,Notepad++ 可完美地取代微軟...
Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以...