您的位置:首页 > 其它

冒泡排序改进算法(双向起泡)

2015-05-17 15:08 316 查看
#include <stdio.h>

void TwoBubbleSort(int *Array ,int n);

void TwoBubbleSort(int *Array ,int n)
{
int topmin=0;
int bottommax=n;
int mmin=0,mmax=0;
int i=0;
int a=0;

while(topmin<bottommax)
{
mmin=0;
mmax=0;
for(i=topmin;i<bottommax;i++)
{
if(*(Array+i)>*(Array+i+1))
{
a=*(Array+i);
*(Array+i)=*(Array+i+1);
*(Array+i+1)=a;
mmax=i;
}
}
if(mmax==0)
break;
bottommax=mmax;

for(i=bottommax-1;i>topmin;i--)
{
if(*(Array+i)<*(Array-1+i))
{
a=*(Array+i);
*(Array+i)=*(Array+i-1);
*(Array+i-1)=a;
mmin=i;
}
}
if(mmin==0)
break;
topmin=mmin;
}
}

int main(void)
{
int array[8]={1,2,3,9,8,7,54,1};
int i=0;

printf("待排数组为:\n");
for(i=0;i<8;i++)
printf("%d ",*(array+i));
printf("\n冒泡排序后的数组:\n");
TwoBubbleSort(array,8);
for(i=0;i<8;i++)
printf("%d ",*(array+i));

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