/*
Cocktail Sort
鸡尾酒排序
时间复杂度:n^2 最好情况接近n
适用于部分已排列的乱序数据
*/
#include <stdio.h>
#include <stdbool.h>
int main()
{
int sort_arr[10] = {12,4,6,2345,657,34,657,34,576,34};
int i;
int bottom = 0;
int top = 10 - 1;
bool swapped = true;
while(swapped == true)
{
swapped = false;
for(i = bottom; i < top; i++)
{
int temp;
if(sort_arr[i] > sort_arr[i + 1])
{
temp = sort_arr[i];
sort_arr[i] = sort_arr[i+1];
sort_arr[i+1] = temp;
swapped = true;
}
}
top = top - 1;
for(i = top; i > bottom; i--)
{
if(sort_arr[i] < sort_arr[i - 1])
{
int temp;
temp = sort_arr[i];
sort_arr[i] = sort_arr[i-1];
sort_arr[i-1] = temp;
swapped = true;
}
}
bottom = bottom + 1;
}
for(i = 0; i < 10; i++)
{
printf("%d ", sort_arr[i]);
}
printf("\n");
return 0;
}