以下のように数値を昇順に並び替えるというものなのですが、実行したところ、なぜか30だけ2番目に来てしまいます。
C言語は勉強し始めで、なにが原因かわかりません。
試験が明日に差し迫っており急を要して申し訳ないのですが、ご教授のほどよろしくお願いします。
#include<stdio.h>
#define N 10
int main(void)
{
int m[N]={12,21,8,25,16,38,22,10,30,7};
int i,j,mp,tmp;
printf("ソート前:\n");
for(i=0; i<N; i++){
printf("%3d",m[i]);
puts("");
}
for(i=0; i<N-1; i++){
mp = 1;
for(j=i+1; j<N; j++){
if(m[j]<m[mp]) mp=j;
}
tmp=m[i];
m[i]=m[mp];
m[mp]=tmp;
}
printf("ソート後:\n");
for(i=0; i<N; i++){
printf("%3d",m[i]);
puts("");
}
return 0;
}