这个课程对BubbleSort的优化指明了一个方向,
即如果有这么一个数组 5,3,4,2,7,6,1,9,10,11,12,13
那么实际上后面的一段9,10,11,12,13已经处于就位的状态,我们可以考虑从这种情况对算法进行优化
下面是我根据这个思路整理的C代码:
int bubbleSort(int *ptr, int len)
{
int i;
int last;
int hi=len,lo=0;
int temp;
while(lo<hi)
{
last = lo;
for(i=1;i<hi;i++)
{
if(ptr[i-1] > ptr[i])
{
temp = ptr[i];
ptr[i] = ptr[i-1];
ptr[i-1] = temp;
last = i;
}
}
hi = last;
}
}