读书人

请高手帮忙讲解quot;起泡法quot;解决方案

发布时间: 2012-02-29 16:44:10 作者: rapoo

请高手帮忙讲解"起泡法"
[size=18px][/size]/*利用起泡法对输入的几个数进行比较*/
#include <stdio.h>
#define N 10;

void main()
{
int a[N]={0};
int i, j, t;


printf("请输入这%个数的具体的原始数字:\n",N);
for (i=0; i<N;i++)
scanf("%d", &a[i]);



//下面是对n个数的所需趟数的循环
for (j = 0; j < N-1; j++)
{
//下面是每一趟进行的两个数间的比较
for (i = 0; i < (N-1-j); i++)
{
if (a[i] > a[i+1])
{
t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
//if语句是对两个数进行的比较
}
}
printf("最后结果的数字为:\n");
for (i=0; i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");

}






[color=#FF0000][/color]编译报18个错 问题在哪?

[解决办法]
#define没有分号的
[解决办法]
冒泡就是小的向上,一个接一个。
[解决办法]
起泡法 是比较好理解的
http://www.vchome.net/tech/datastruct/datasf21.htm
[解决办法]
相邻的两个数比较,较大的放在后面。。这样一次之后,最大的数就排在最尾了。。。循环多次完成排序
[解决办法]

C/C++ code
void bubble_sort(int a[],int n)//将a中整数序列重新排列成自小至大有序的整数序列。{    int change,temp,i,j;    for(i=n-1,change=TRUE;i>=1 && change;--i)    {        change=FALSE;        for(j=0;j<i;++j)        {            if(a[j]>a[j+1])            {                temp=a[j];                a[j]=a[j+1];                a[j+1]=temp;                change=TRUE;            }        }    }}//bubble_sort起泡排序,时间复杂度T(n)=O(n^2)
[解决办法]
#define N 10;
这不叫做C语句,而是预处理命令。所以不用分号。
一般书上的冒泡和楼上的一样。
[解决办法]
这个很好理解,要是想要效率的话,建议用快速排序!!!!

读书人网 >C语言

热点推荐