#include
#include "creatdata.c"
#define ARRAYLEN 6
void BubbleSort(int a[],int n)
{
int i,j,t;
for(i=0;i
for(j=n-1;j>i;j--)
{
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
printf("第%2d遍:",i+1);
for(j=0;j
printf("\n");
}
}
void BubbleSort1(int a[],int n)
{
int i,j,t,flag=0; //flag用来标记是否发生交换
for(i=0;i
for(j=n-1;j>i;j--)
{
if(a[j-1]>a[j])//交换数据
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
flag=1;
}
}
printf("第%2d遍:",i+1);
for(j=0;j
printf("\n");
if(flag==0) //没发生交换,直接跳出循环
break;
else
flag=0;
}
}
int main()
{
int i,a[ARRAYLEN];
for(i=0;i
if(!creatdata(a,ARRAYLEN,100))
{
printf("生成随机数不成功!\n");
getch();
return 1;
}
printf("原数据:");
for(i=0;i
printf("\n");
BubbleSort1(a,ARRAYLEN);
printf("排序后:");
for(i=0;i
printf("\n");
getch();
return 0;
}
你写的是沉底法,而且最多循环n-1次
for循环应该写成
for(i=1;i
其他的应该都对
试下对不
我也是刚学c 不对别怪我啊 呵呵
swap(&clients[j].distance,&clients[j+1].distance);
这句把两个结构体中的distance成员值作了交换,但是没有对结构体排序。
void bubble(struct client_list *clients,int n)
把类数组 参数传递 改成指针 看看
逻辑问题 你自己查查