c语言中的数组排序问题

img

img

img

img


为什么a与max的值一会交换,一会又不交换,我在if后面设置了条件的呀,这是怎么回事啊

再每句后面添加输出数组中所有元素,自己观察一下。

void printall() {
 static int n=1;
 int i;
 printf("\nn:%04d: ",n);
 n++;
 for (i=0;i<10;i++) printf("a[%d]:%2d ",i,a[i]);
 printf("\n");
 getchar();//按回车键继续
}

……
printall();
……
printall();
……
printall();

每次选择最大数与数组最后一个元素交换

#include<stdio.h>
#define m -65536
void p(int t[],int n)
{
    for(int j=0; j<n; j++)
        printf("%d ",t[j]);
    printf("\n");
}
int main()
{
    int t[10],n=10;
    printf("输入10个数:");
    for(int j=0; j<10; j++)
        scanf("%d",&t[j]);
    for(int k=0; k<n-1; k++)
    {
        int max=t[0],pos=0;
        for(int j=1; j<n-k; j++)
        {
            if(t[j]>max)
            {
                max=t[j];
                pos=j;
            }
        }
        printf("%d与%d交换\n",t[n-k-1],t[pos]);
        int tem=t[n-k-1];
        t[n-k-1]=max;
        t[pos]=tem;
        p(t,10);
    }
    printf("小到大排序:");
    p(t,10);
    return 0;
}