关于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回答

Lion_ssg

2017-10-19

一样的,i=0的时候内层循环不执行

0
2
Lion_ssg
回复
夜很殇37
厉害了老哥,又做了个小优化~
2017-10-19
共2条回复

liuyubobobo

2017-10-19

你是对的,从i=1开始是最好的。虽然从0开始整个算法依然是正确的,只是做了一下无用功。因为当i=0时,在内层循环,j=i就是j=0,不满足j>0的条件,内层循环直接退出,然后就会执行i=1的情况:)


感谢提醒!

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程