バブルソート
Posted: 2010年7月08日(木) 15:22
下のプログラムがなぜ降順で出力されるのか分かりません。不等号の向きが昇順になっているのに、どうして降順になるのかが理解できません。
ご教授お願いします。
#include <stdio.h>
#define MAX 10000
int main (int argc, const char * argv[/url]) {
int N,data[MAX],d[MAX],j,k,w,x,a;
x=0;
a=1;
do{printf("学生番号を入力してください\n");
scanf("%d",&N);
if(N!=0){printf("得点を入力してください\n"); scanf("%d",&data[N]);}x++;}
while(N!=0);
for(j=0; j<x;j++){
d[j]=data[j];}
for(j=0; j<x;j++)
{for(k=0;k<x-j-1;k++){
if(d[k]>d[k+1]){
w=d[k];
d[k]=d[k+1];
d[k+1]=w;}}}
printf("昇順での整列結果\n");
for(j=x-1;j>0;j--){
printf("%d位 %d点\n",a,d[j]);a++;}
return 0;
}
ご教授お願いします。
#include <stdio.h>
#define MAX 10000
int main (int argc, const char * argv[/url]) {
int N,data[MAX],d[MAX],j,k,w,x,a;
x=0;
a=1;
do{printf("学生番号を入力してください\n");
scanf("%d",&N);
if(N!=0){printf("得点を入力してください\n"); scanf("%d",&data[N]);}x++;}
while(N!=0);
for(j=0; j<x;j++){
d[j]=data[j];}
for(j=0; j<x;j++)
{for(k=0;k<x-j-1;k++){
if(d[k]>d[k+1]){
w=d[k];
d[k]=d[k+1];
d[k+1]=w;}}}
printf("昇順での整列結果\n");
for(j=x-1;j>0;j--){
printf("%d位 %d点\n",a,d[j]);a++;}
return 0;
}