在 Java 中,我有一个不同正数的列表。
每个数字都用作哈希集中的键,IntIntHashSet fs
并cs
在下面的代码中用于检索一些条件值。然后我检查条件(if 语句),如果为真,则交换元素。
int[] list = // given list of positive different ints like [14, 2, 7, 19, 20, 3]
int l = list.length;
if (l > 1) {
int elI, elJ, fI, fJ, swap;
for (int i = 0; i < l; i++) {
boolean swapped = false;
for (int j = 1; j < l; j++) {
elI = list[j - 1];
elJ = list[j];
fI = fs.get(elI);
fJ = fs.get(elJ);
if (fI > fJ || (fI == fJ && cs.get(elI) > cs.get(elJ))) {
swap = list[j];
list[j] = list[j - 1];
list[j - 1] = swap;
swapped = true;
}
}
if (!swapped) break;
}
}
它看起来像一个冒泡排序,虽然我不太确定。我正在编写一个耗时的程序,这部分应该尽可能优化。
主要问题:使用另一种排序方法(如QuickSort)会更快吗?
第二个问题:在没有临时变量的情况下使用异或交换方法会更快swap
吗?
[编辑]:我可能有一个很长的列表,其中包含数千个数字。由于示例,上面的一个很简单。