傳統的冒泡排序法相信大家都耳熟能詳,這裏介紹兩個改進後的冒泡排序法。
方法一:
void Bubble(int r[],int n)
{int i = n-1;
while(i>0)
{
int pos = 0;
int temp = 0 ;
for(int j = 0;j< i;j++)
{
if(r[j]>r[j+1])
{
pos = j;
temp = r[j];
r[j] = r[j+1];
r[j+1] = temp;
}
}
i = pos;
}
}
該方法最大的特點就是,記錄每次發生變化的最大值,之後不變就意味着後面的已經排好。
方法二:
void Bubble(int r[],int n)
{
int low = 0,high = n-1;
int temp,j;
while(low<high)
{
for( j = low ;j<high;j++)
{
if(r[j]>r[j+1])
{
temp = r[j];
r[j] = r[j+1];
r[j+1] = temp;
}
}
high--;
for( j = high;j>low;j--)
{
if(r[j]<r[j+1])
{
temp = r[j];
r[j] = r[j+1];
r[j+1] = temp;
}
}
low++;
}
}
該方法最大的特點是同時從頭和爲進行排序。