replecandidatesetbuilder.java
来自「pso源程序」· Java 代码 · 共 54 行
JAVA
54 行
/**
* Description: For building the candidate set for an array with some repeat elements
*
* @ Author Create/Modi Note
* Xiaofeng Xie Dec 05, 2006
*
* @version 1.0
*/
package implement.common.behavior.elemPick.increment.candidateBuild;
import Global.basic.data.collection.*;
public class RepLECandidateSetBuilder extends AbsLECandidateSetBuilder {
//For extensive IDs
private IBasicICollectionEngine segmentIDArray;
private IBasicICollectionEngine segmentWVArray;
public RepLECandidateSetBuilder() {}
public void initValueArray(int[] valueArray) {
super.initValueArray(valueArray);
int nodeNumber = valueArray.length;
IArray segmentIDArray = new IArray(nodeNumber);
IArray segmentWVArray = new IArray(nodeNumber);
int[] sortedArray = new int[nodeNumber];
for (int i=0; i<nodeNumber; i++) {
sortedArray[i] = valueArray[orderArray[i]];
}
BasicCollection.toSegments(segmentIDArray, segmentWVArray, sortedArray);
this.segmentIDArray = segmentIDArray;;
this.segmentWVArray = segmentWVArray;
}
// The corrected getMaxWID function
// protected int getMaxWID(int maxWSum) {
// return segmentIDArray.getElementAt(BasicCollection.binaryLSearch(segmentWVArray, maxWSum, 0, segmentWVArray.getSize()-1));
// }
//Note: The getMaxWID function in the SIS07 paper has the bug
protected int getMaxWID(int maxWSum) {
int dataSize = segmentWVArray.getSize()-1;
if (segmentWVArray.getElementAt(dataSize)<=maxWSum) return segmentIDArray.getElementAt(dataSize);
int i;
for (i=0; i<dataSize; i++) {
if (segmentWVArray.getElementAt(i)>maxWSum) {
break;
}
}
return segmentIDArray.getElementAt(i);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?