在Java中,我有一個正數不同的列表。在Java中排序和交換元素的最快方法
每個數字都用作下面代碼中用於檢索某些條件值的散列集IntIntHashSet fs
和cs
中的鍵。 然後我檢查條件(如果語句),如果爲true,則交換元素。
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會更快嗎?
第二個問題:使用時會更快xor沒有臨時變量的交換方法swap
?
[編輯]:我可能有一個包含數千個數字的很長的列表。以上例子很簡單。