双向冒泡排序的思路也很简单
每一大趟中,先从下到上将最小的冒泡,再从上到下将最大的的下沉。
双向冒泡排序的稍微优于传统的冒泡排序,但是由于算法的进本过程决定了,冒泡排序的速度不可能过快。
void bubble_sort(datatype R[],int n)
{
int i = 1,j,swap = 1;
while(i < n && swap == 1)
{
swap = 0;
for(j = n; j >= i + 1; j--)
{
if(R[j].key < R[j - 1].key)
{
R[0] = R[j];
R[j] = R[j - 1];
R[j - 1] = R[0];
swap = 1;
}
}
for(j = 1; j <= n; j++)
{
if(R[j].key > R[j + 1].key)
{
R[0] = R[j];
R[j] = R[j + 1];
R[j + 1] = R[0];
swap = 1;
}
}
i++;
}
}