给你改了一下。看看行不行。
#include
#define N 100
void BubbleSort(int A[],int s,int m)
{
int i=0,j=0,t=0;
for(j=s;jfor(i=j;iif(A[j]t=A[i],A[i]=A[j],A[j]=t;
}
int main()
{
int A[100],t,n,s,m;
scanf("%d",&n);
for(int i=0;iscanf("%d",&A[i]);
scanf("%d%d",&s,&m);
BubbleSort(A,s,m);
for(int j=0;jprintf("%d ",A[j]);
return 0;
}
void BubbleSort(int A[], int s, int m)
{
int *p = A + s;
// 这里的指针变量p,直接指向开始的元素,于是可以把那一段要排序的元素,看成是一个由p作为数组名称的数组元素进行普通的冒泡排序了。
int i, j, t;
for(i = 0; i < m-1; i++)
for(j = 0; j < m-i; j++)
if(p[i] > p[j])
{
t = p[i];
p[i] = p[j];
p[j] = t;
}
}
你在主程序中的for语句当中,i 直接从1开始,那么数组中A的第一个元素就没有给赋值,因为他是从0开始计算的
你的代码呢?