关于java实现的问题,麻烦老师解惑
来源:2-5 插入排序法 - Insertion Sort
夜很殇37
2017-10-19
public static void sort(Comparable[] arr){
int n = arr.length;
for (int i = 0; i < n; i++) {
// 寻找元素arr[i]合适的插入位置
// 写法1
// for( int j = i ; j > 0 ; j -- )
// if( arr[j].compareTo( arr[j-1] ) < 0 )
// swap( arr, j , j-1 );
// else
// break;
// 写法2
for( int j = i; j > 0 && arr[j].compareTo(arr[j-1]) < 0 ; j--)
swap(arr, j, j-1);
}
}为什么第一层循环的i是从0开始的 ? 不是可以从1开始吗
写回答
2回答
-
一样的,i=0的时候内层循环不执行
022017-10-19 -
liuyubobobo
2017-10-19
你是对的,从i=1开始是最好的。虽然从0开始整个算法依然是正确的,只是做了一下无用功。因为当i=0时,在内层循环,j=i就是j=0,不满足j>0的条件,内层循环直接退出,然后就会执行i=1的情况:)
感谢提醒!
00
相似问题