主题:最原始的排序,对于以后学习其他排序和数组中的排序都有帮助..
饮水不忘思源,在论坛上,朋友们帮我解决了不少问题.我把自己在学习中的一点经验和大家分享.
问题:输入4个不等数字(下例中我定义为整型),按从大到小排列.
main()
{int a,b,c,d,max;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(b>a&&b>c&&b>d)
{max=a;
a=b;
b=max;
}
if(c>a&&c>b&&c>d)
{max=a;
a=c;
c=max;
}
if(d>a&&d>b&&d>c)
{max=a;
a=d;
d=max;
}
if(c>b&&c>d)
{max=b;
b=c;
c=max;
}
if(d>b&&d>c)
{max=b;
b=d;
d=max;
}
if(d>c)
{max=c;
c=d;
d=max;
}
printf("%d>%d>%d>%d ",a,b,c,d);
}
我介绍一下整体思路,其中的max介绍的只不过是一个中间存储量,我们需要做的就是,叫a中存储的数据最大,b中的次大,c中的再次大,d中的数据最小.
初学者在排序问题上,我认为最大的困难就是思想,我们所定义的变量一定要把他看作是一个可变的,可以重复赋值的中间过程,而不能看成是一个具体的数字.
在以后的排序中用到的也是这种思路,数组中的立体排序也是这样,不过就是复杂了一点,不过思路有了,别的就是小问题了.
问题:输入4个不等数字(下例中我定义为整型),按从大到小排列.
main()
{int a,b,c,d,max;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(b>a&&b>c&&b>d)
{max=a;
a=b;
b=max;
}
if(c>a&&c>b&&c>d)
{max=a;
a=c;
c=max;
}
if(d>a&&d>b&&d>c)
{max=a;
a=d;
d=max;
}
if(c>b&&c>d)
{max=b;
b=c;
c=max;
}
if(d>b&&d>c)
{max=b;
b=d;
d=max;
}
if(d>c)
{max=c;
c=d;
d=max;
}
printf("%d>%d>%d>%d ",a,b,c,d);
}
我介绍一下整体思路,其中的max介绍的只不过是一个中间存储量,我们需要做的就是,叫a中存储的数据最大,b中的次大,c中的再次大,d中的数据最小.
初学者在排序问题上,我认为最大的困难就是思想,我们所定义的变量一定要把他看作是一个可变的,可以重复赋值的中间过程,而不能看成是一个具体的数字.
在以后的排序中用到的也是这种思路,数组中的立体排序也是这样,不过就是复杂了一点,不过思路有了,别的就是小问题了.