
for(i=0;i<n-1;i++);for(j=i+1;j<n;j++)用于计算sort的函数,为什么是j=i+1而不是j=0
展开全部
冒泡排序吧?因为前面i个数都已经排好顺序了不需要重新比较了 j=0开始的话也是对的就是相对会慢一点
追问
#include
void sort(int x[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(x[i]<x[j])
{t=x[i];x[i]=x[j];x[j]=t;}
}
int main()
{
int a[4],i;
for(i=0;i<4;i++)
scanf("%d",&a[i]);
sort(a,4);
for(i=0;i<4;i++)
printf("%2d",a[i]);
}整个程序在这,但是J=0的话不能全部排序,只能个别排序
追答
好吧是我讲错了 不过还是因为前面i个数都已经排好顺序了
冒泡就是先找到最大的数放到第一位 然后找到第二大的数放到第二位 但这时因为第一大的数已经在第一位了 所以第二大的数就是除了第一位的最大的数 以此类推 第n大的数就是除了前n-1个数中最大的数 所以j要从i+1开始
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询