关于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
相似问题