//简单选择排序法
#include
int main()
{
int a[8]={132,34,15,156,1516,141,163,17};
//从大到小
int i,j,k;
for(j=0;j {
for(i=j;i {
if(a[i+1]>a[j])//此处改为“<”(即从小到大)运行为出现问题???????
{
a[i+1]=a[i+1]+a[j];
a[j]=a[i+1]-a[j];
a[i+1]=a[i+1]-a[j];
}
}
printf("the %dst round:\n",j+1);
for(k=0;k<8;k++)
{
printf("% 5d",a[k]);
}
printf("\n");
}
//printf("the %dst round:\n",(j+1));
//printf("\n");
return 0;
}
if(i + 1 < 8 && a[i+1]<a[j])这样就行了。没判断i + 1 < 8的话直接会溢出
int a[8]={132,34,15,156,1516,141,163,17};
//从大到小
int i,j,k;
for(j=0;j < 8;j++)
{
for(i=j;i < 7;i++)
{
if(a[i+1] < a[j])//此处改为“<”(即从小到大)运行为出现问题???????
{
a[i+1]=a[i+1]+a[j];
a[j]=a[i+1]-a[j];
a[i+1]=a[i+1]-a[j];
}
}
}
int a[8]={132,34,15,156,1516,141,163,17};
//从大到小
int i,j,k;
for(j=0;j < 8;j++)
{
for(i=j;i < 8;i++)
{
if(a[i+1] > a[j])//此处改为“<”(即从小到大)运行为出现问题???????
{
a[i+1]=a[i+1]+a[j];
a[j]=a[i+1]-a[j];
a[i+1]=a[i+1]-a[j];
}
}
}
数组下标越界;当 i=7 时, i+1 = 8 发生越界