找工作面試時永遠少不了一種題目,就是排序,而各種排序中冒泡排序又是被問道次數最多的一種。那麼,真的懂冒泡排序麼?
一般我們會這樣寫
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;
}
}