冒泡排序求教
#include<stdio.h>void main()
{
int i=0,j=0,p=0;
int a[7]={1,2,8,3,2,4,9};
for(j=1;j<=5;j++)
for(i=1;i<=6-j;i++)
if(a[i]<a[i+1])
{
p=a[i];
a[i]=a[i+1];
a[i+1]=p;
}
for(i=6;i>0;i--)
printf("a[%d]=%d\n",i,a[i]);
}
请问下里面的i表示第j遍扫描待比较元素的下标,i=1,2,...n-j;
排序后变化(不设置a[0])
a[6] 9 1
a[5] 4 9
a[4] 2 第一次扫描后排序为 4
a[3] 3 2
a[2] 8 3
a[1] 1 8
然后比如说如题n=6,假设是第1遍扫描,那么就是i=6-1=5,就是a[5] 然后就是9了...不应该是1吗?这个怎么理解呢?
谢谢~~