插入排序的的if语句应该写在内循环条件里面,你的插入排序时间复杂度和选择排序时间复杂度一样,所以慢
Java
/**
* Insertion sort based on exchange
* @param array, Array of Comparable to be Sorted
*/
public static void sort( Comparable[] array ){
for (int i = 1; i < array.length; i++) {
for(int j=i;j>0&&less(array[j],array[j-1]);j--){
exch(array, j, j-1);
}
}
}
说快慢是在基于时间复杂度、空间复杂度等等的条件,你不能说写个程序一侧看谁快,会有偶然性的,请从算法的性能因素方面来考虑
从理论上讲理 选择排序<插入排序<希尔排序 但是实际耗时取决于样本和具体实现。
搞1w个用例测一下
插入排序的的if语句应该写在内循环条件里面,你的插入排序时间复杂度和选择排序时间复杂度一样,所以慢
Java
/**
* Insertion sort based on exchange
* @param array, Array of Comparable to be Sorted
*/
public static void sort( Comparable[] array ){
for (int i = 1; i < array.length; i++) {
for(int j=i;j>0&&less(array[j],array[j-1]);j--){
exch(array, j, j-1);
}
}
}