所以我会通过一些常见的排序算法,并写了这个:插入排序算法的缺陷
代码:
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