第一种解题方法:冒泡法排序
#include <stdio.h>
int main()
{
int a[100];
int i,j,n,temp;
printf("Input the number of data:");
scanf("%d",&n); //从键盘输入排序数据的个数
printf("Input %d data:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("原数组为:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]); //输出原始的一维数组序列
printf("\n");
for(i=0;i<=n-2;i++) //两重for循环对数组a中元素进行由小到大的排序
for(j=0;j<=n-2-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("从小到大的顺序为:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
return 0;
}
第二种解题方法:选择顺序法
#include <stdio.h>
#define N 10
int main()
{
int a[N];
int i,j,k,t;
printf("input %d numbers:",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<=N-2;i++)
{
k=i; //变量k用于记录最小值的下标,假定第i次中最小数的位置是i
for(j=i+1;j<N;j++)
{
if(a[j]<a[k]) //a[k]是每次比较后当前的最小数
{
k=j;
}
if(i!=k) //若最小数不是默认的a[i],则将a[i]与a[k]的直交换
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
}
printf("The sorted numbers:");
for(i=0;i<N;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}