所以我會通過一些常見的排序算法,並寫了這個:插入排序算法的缺陷
代碼:
public void insertionSort() {
int key;
int i;
for (int j = 1; j < this.a.length; j++) {
key = a[j];
i = j;
while (i > 0 && a[i-1] > key) {
a[i] = a[i-1];
i = i - 1;
}
a[i] = key;
}
}
結果:
[email protected]:~/Dropbox/programming/java/algorithms$ javac sort.java
[email protected]:~/Dropbox/programming/java/algorithms$ java Test
49, 68, 60, 14, 70, 8, 83, 96, 29, 7, 92, 35, 17, 84, 31, 62, 48, 95, 16, 22, 31, 97, 72, 55, 88, 63, 1, 63, 96, 32, 74, 15, 92, 77, 50, 13, 12, 36, 90, 93, 20, 15, 67, 88, 23, 31, 95, 90, 86, 65, 35, 27, 60, 4, 90, 11, 22, 97, 65, 88, 23, 1, 25, 21, 9, 81, 87, 56, 2, 4, 63, 52, 55, 86, 62, 30, 55, 64, 19, 10, 45, 92, 87, 43, 39, 95, 20, 43, 3, 30, 74, 64, 4, 90, 91, 93, 94, 44, 87, 21,
49, 1, 1, 2, 3, 4, 4, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 19, 20, 20, 21, 21, 22, 22, 23, 23, 25, 27, 29, 30, 30, 31, 31, 31, 32, 35, 35, 36, 39, 43, 43, 44, 45, 48, 50, 52, 55, 55, 55, 56, 60, 60, 62, 62, 63, 63, 63, 64, 64, 65, 65, 67, 68, 70, 72, 74, 74, 77, 81, 83, 84, 86, 86, 87, 87, 87, 88, 88, 88, 90, 90, 90, 90, 91, 92, 92, 92, 93, 93, 94, 95, 95, 95, 96, 96, 97, 97,
Execution took: 110628 nano sek?
正如您從測試中看到的那樣,第一個值不受排序的影響。我的算法有什麼問題?
請注意,在第一個以'int j = 0'開始的不精確的循環中。想想吧.. 另外,我會重構'j'到'索引'和'我'到'以前' – Gevorg 2012-01-14 15:04:46
**編輯:**上述問題的代碼是固定的。 – realPK 2014-03-16 19:22:38