找工作面试时永远少不了一种题目,就是排序,而各种排序中冒泡排序又是被问道次数最多的一种。那么,真的懂冒泡排序么?
一般我们会这样写
for(i=0;i<len(L);i++)
for (j=i;j<len(L);j++)
if(L[i]>L[j])
swap(L,i,j);
但是正宗的冒泡排序是这样的
for(i=0;i<len(L);i++)
for (j=len(L)-2;j>i;j--)
if(L[j]>L[j+1])
swap(L,j,j+1);
我们还可以这样优化
bool flag=True;
for(i=0;i<len(L)&&flag;i++){
flag=False;
for (j=len(L)-2;j>i;j--)
if(L[j]>L[j+1]){
swap(L,j,j+1);
flag=True;
}
}