双向冒泡排序.cpp
来自「数据结构学习用到的一些程序!!里面有二叉树相关的几个」· C++ 代码 · 共 45 行
CPP
45 行
#include<stdio.h>
#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,9,8,7,1,10};
int n=10, i;
printf("双向冒泡排序\n排序前:\n");
for(i=0;i<n;i++)
printf("%d\n",A[i]);
printf("排序后:\n");
bibubble(A,n);
for(i=0;i<n;i++)
printf("%d\n",A[i]);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?