您的位置:首页 > 其它

冒泡排序的改进:鸡尾酒排序

2017-08-03 20:56 176 查看
对于鸡尾酒排序,是冒泡排序的改进版。

思路是先从左往右,把最大的沉底,然后再从右往左,把最小的放在左边,最后停在中间。

下面是程序:

#include <stdio.h>

// 交换函数

void swap (int a[], int i, int j)

{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;

}

// 打印数组

void printA (int *a, int len)

{
int i;
for (i = 0; i < len; i++)
{
printf ("%4d", a[i]);
}

printf ("\n");
}

int main()

{
int a[10] = {9,6,8,0,3,5,2,4,7,1};
int len = sizeof(a) / sizeof(a[0]);

int i;
int left  = 0;
int right = len - 1;

while (left < right)
{
// 从左往右找到一个最大的数放到right的位置
for (i = left; i < right; i++)
{
if (a[i] > a[i+1])
{
swap (a, i, i+1);
}
}
right--;     

// 从右往左找到一个最小的数放到left的位置
for (i = right; i > left; i--)
{
if (a[i-1] > a[i])
{
swap (a, i, i-1);
}
}
left++;
}

printA (a, len);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: