这种排序方法又称双向起泡。奇数趟时,从前向后比较相邻元素的关键字,遇到逆序即交换,直到把序列中关键字最大的元素移动到序列尾部。偶数趟时,从后往前比较相邻元素的关键字,遇到逆序即交换,直到把序列中关键字最小的元素移动到序列前端。
先从前面进行冒泡排序,把数值大的往后移
再从后面进行冒泡排序,把数值小的元素往前移
重复进行
这个时候已经排完序了最后出循环是这样的
本题代码如下
void twobubble(int a[], int sz)
{
int i = 0;
int low = 0;
int high = sz - 1;
int temp = 0;
while (low < high)
{
for (i = low; i < high; i++)//从前面进行冒泡排序
{
if (a[i] > a[i+1])//把数值大的往后移
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
high--;
for (i = high; i> low; i--)//从后面进行冒泡排序
{
if (a[i]
完整测试代码
#include
void twobubble(int a[], int sz)
{
int i = 0;
int low = 0;
int high = sz - 1;
int temp = 0;
while (low < high)
{
for (i = low; i < high; i++)//从前面进行冒泡排序
{
if (a[i] > a[i+1])//把数值大的往后移
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
high--;
for (i = high; i> low; i--)//从后面进行冒泡排序
{
if (a[i]