为什么使用冒泡法没有改变顺序

 

#include<stdio.h>
 int main()
 {   int n,i,j;
     int a[10],t;
     printf("请选择输入多少个数\n");
     scanf("%d",&n);
     printf("输入的个数为%d\n",n);
     for(i=0;i<n;i++)
     scanf("%d",&a[i]);
     for(i=0;i<n ;i++)
    { for(j=0;j<j-i;j++)
     if(a[j]>a[j+1])
     {t=a[j];
     a[j]=a[j+1];
     a[j+1]=t;}
     }
     printf("从小到大顺序:\n");
     for(i=0;i<n;i++)
     { printf("%d",a[i]);printf("\n");}
     return 0;

 }

排序算法的内部循环控制条件不对:i>=0时,j<j-i永远不成立,里面根本没跑。应该改为j<n-i-1。

你这个j-i秀到我了

外层循环运行一次,内层循环循环一周