您的位置:首页 > 其它

冒泡排序及其改进算法

2013-05-09 10:59 239 查看
//1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。

//2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。

//3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
/*
# include<stdio.h>
void Bubble_Sort(int A[],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
{
if(A[j]>A[j+1])
{
temp=A[j];
A[j]=A[j+1];
A[j+1]=temp;
}
}
}
void main()
{
int A[]={1,5,4,32,5,7};
Bubble_Sort(A,6);
for(int i=0;i<6;i++)
printf("%d ",A[i]);
printf("\n");
}//不管有没有数据交换,均要进行比较
*/
//冒泡排序的改进方式,根据判断flag,来确定是否有数据元素的交换,如果哪一趟没有数据交换,则退出循环
# include<stdio.h>
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void Bubble_Sort1(int A[],int n)
{
int i,k;
k=n;
bool flag=true;
while(flag)
{
flag=false;
for(i=1;i<k;i++)
{
if(A[i-1]>A[i])
{
swap(&A[i-1],&A[i]);
flag=true;
}
}
k--;
}
}
void main()
{
int A[]={0,8,7,5,9,4,1,3};
Bubble_Sort1(A,8);
for(int i=0;i<8;i++)
printf("%d ",A[i]);
printf("\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 冒泡排序