0/1的危害啊,joel on software中提到过,果然如此,写的乱七八糟的。
public class Measure {
private char[] sequence;
private int measure;
public Measure() {
this("");
}
public Measure(String seqString) {
this.sequence = seqString.toCharArray();
this.measure = 0;
}
public int calculate() {
this.mergeSort(0, this.sequence.length - 1);
return this.measure;
}
private void mergeSort(int begin, int end) {
int middle = (begin + end) / 2;
if (begin < end) {
this.mergeSort(begin, middle);
this.mergeSort(middle + 1, end);
this.merge(begin, middle, end);
}
}
private void merge(int begin, int middle, int end) {
int from = begin;
int to = end;
int temoMiddle = middle;
char[] tempSeq = new char[end + 1];
int position = 0;
while (begin <= temoMiddle && middle + 1 <= end){
if (this.sequence[begin] < this.sequence[middle + 1]) {
tempSeq[position] = this.sequence[begin++];
} else {
this.measure += (temoMiddle + 1) - begin;
tempSeq[position] = this.sequence[middle + 1];
middle++;
}
position++;
}
while (begin <= temoMiddle) {
tempSeq[position++] = this.sequence[begin++];
}
while (middle < end) {
tempSeq[position++] = this.sequence[middle + 1];
middle++;
}
System.arraycopy(tempSeq, 0, this.sequence, from, to - from + 1);
System.out.println("measure:" + measure);
System.out.println("seq " + new String(this.sequence));
}
public int getMeasure() {
return measure;
}
public void setMeasure(int measure) {
this.measure = measure;
}
public String getSequence() {
return new String(sequence);
}
public void setSequence(String sequence) {
this.sequence = sequence.toCharArray();
}
}
分享到:
相关推荐
字符串hash 堆 二维树状数组 Trie树 二叉查找树 线段树 RMQ LCA+RMQ SB-Tree 数论 生成紧凑素数表 分解质因子 最大公约数 a^b mod n 扩张欧几里德算法 素数表质因子分解 Stirling公式 中国剩余定理...
- **题目大意**:给定N个数(N ≤ 50000),要求找出5个数的组合,这些数彼此之间不存在逆序关系的数量。 - **算法讨论**:考虑到数据范围较大,首先需要对输入的数值进行离散化处理,将其映射到较小的整数集合中。...
5. **字符串处理**:字符串在编程中广泛应用,涉及模式匹配、子串查找、字符统计等。 6. **排序与搜索**:快速排序、归并排序、二分查找等经典算法,能提高数据处理效率。 7. **动态规划**:解决最优化问题的常用...
4.2归并排序+逆序数的求取 128 5.字符串 130 5.1 KMP应用 130 5.2 后缀数组 131 5.3 中缀表达式转后缀表达式 134 5.4 Firefighters 表达式求值 135 6.博弈 139 6.1 博弈的AB剪枝 139 6.1.1 取石子 139 6.2 博弈 SG...
例如“归并排序”、“快速排序”、“求排列的逆序数”等。 3. 回溯算法:这是一种通过探索所有可能的分步解决方案来找出所有解的算法。在“八皇后问题”、“汉诺塔”等经典问题中会用到。 4. 贪心算法:在每一步...