#include "stdio.h"
#define N 10
/*本代码还可以优化,希望大家思考下*/
int main(void)
{
int i,j,t,a[N],min;
printf("请输入%d个要排序的数字:/n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
/*输出用户输入的数字*/
printf("/n");
printf("你输入的数字是:/n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("/n");
for(i=0;i<N-1;i++) /*因为是比较N个数字,所以比较N-1趟就行了*/
{
min=i; /*注意设置一个值(可以不是最小)给min,相当于是用min记录最小的
我们现在假设第一个就是最小的 第一次比较默认的是第一个最小。以此类推,找到比它小的就交换*/
for(j=i+1;j<N;j++) /*每趟只要从i+1开始比,直到最后那个就行了*/
if(a[min]>a[j]) /*只要有一个比我们默认设置的最小值要小我们就把他赋给min(此处不是赋具体值,而是告诉min他的位置)*/
min=j; /*比较最小,后语句进入换位*/
t=a[i]; /*第一趟只要交换min和a[i]那么就把第一小的放进了a[0]*/
a[i]=a[min]; /*交换是在每一趟比较完以后进行,冒泡是即时交换*/
a[min]=t;
}/*注意,if后面只有一条语句,那就是min=j;交换的语句是for里面的语句我用缩进表示了这个关系*/
printf("升序排序后的顺序是:/n");
for(i=0;i<N;i++)
printf("%5d",a[i]); /*输出排序后的数字*/
printf("/n");
return 0;
}
复制代码
老规矩 ,看不懂的随时可以留言提问。或者发邮件
yeying@bcwhy.com
其他问题请去http://www.bcwhy.com/forum-37-1.html
我们会及时回复