-
2003-12-09
经典C++双向冒泡排序算法
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
#include《iostream.h》
http://hawkman2k.blogbus.com/logs/56993.html
#define max 20 //最多记录个数
typedef int elemtype;
typedef elemtype recs[max];
void bibubble(recs r,int n)
{
int flag=1; //继续遍历时flag置1,已排好序不需遍历时为0
int i=0, j;
elemtype temp;
while(flag==1)
{
flag=0;
for(j=i+1;j《n-1;j++) //正向遍历找最大值
if(r[j]》r[j+1])
{
flag=1; //能交换时,说明未排好序,需继续
temp=r[j];
r[j]=r[j+1];
r[j+1]=temp;
}
for(j=n-i-1;j》=i+1;j--) //反向遍历
if(r[j]》r[j-1])
{
flag=1; //能交换时,说明未排好序,需继续
temp=r[j];
r[j]=r[j-1];
r[j-1]=temp;
}
i++;
}
}
void main()
{
recs A={2,5,3,4,6,10,9,8,7,1};
int n=10, i;
cout《《"双向冒泡排序"《《endl《《"排序前:";
for(i=0;i《n;i++)
cout《《A[i]《《"";
cout《《endl;
cout《《" 排序后: ";
bibubble(A,n);
for(i=0;i《n;i++)
cout《《A[i]《《"";
cout《《endl;
}随机文章:
模拟键盘响应 2003-12-11计数排序(count sorting) 2003-12-02报数退出问题 2003-12-02一位女生对男生追心仪女孩的建议 2004-01-06求100以内的素数 2003-12-02
收藏到:Del.icio.us








评论