在一个冒泡排序算法中,i是等于j-1的,为什么在内层循环中把i换成j-1就出现了错误。
这是用j-1的代码:
#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
void fun( STREC a[] )
{
STREC tmp;
int i,j;
for(i = 0; i < N; i++)
for(j = i+1; j < N; j++)
{
if(a[j-1].s<a[j].s)
{
tmp=a[j-1];
a[j-1]=a[j];
a[j]=tmp;
}
}
}
其排序结果为:
用i的代码:
int i,j;
for(i = 0; i < N; i++)
for(j = i+1; j < N; j++)
{
if(a[i].s<a[j].s)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
其结果为