日期:2014-05-20  浏览次数:20637 次

冒泡排序法中有个语句搞不懂,求教。
class Bubble
{
int temp=0;
public void BubbleSort(int arr[])
{
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
其中第二个for循环中j<arr.length-1-i是什么意思,为什么要减i ?


------解决方案--------------------
如果是10个, 
I=1时, 已经将最大的数排在最尾上,
所以下面排的时候就不再需要考虑最尾上的数咯, 
, 例如I=5,排到了第5次, 也就是说最大的5个数已经排好位了, 你也就不再去排咯,
这是效率问题咯, 不减I也可以, 呵呵, 效率差点而以


------解决方案--------------------
每次排序都把最大的或最小的放在前面,所以arr.length-1-i,是把已经排序好的不重新排序