从小到大
#include <stdio.h>
int main()
{
int a[10]={10,5,88,97,46,32,82,3,15,66};
int i,j,k,t;
// for(i=0;i<10;i++)
// {
// scanf("%d",&a[i]);
// }
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<=9;j++)
{
if(a[j]<a[k])
{
k=j;
}
}
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
从大到小
将最大的数排在第一位:
#include <stdio.h>
#define num 8
int main()
{
int a[num]={12,4,6,8,11,54,43,76};
int i,j,max,temp;
for(i=0;i<num-1;i++)
{
max=i;
for(j=i+1;j<num;j++)
{
if(a[j]>a[max])
{
max=j;
}
}
temp=a[max];
a[max]=a[i];
a[i]=temp;
}
for(i=0;i<num;i++)
{
printf("%d ",a[i]);
}
return 0;
}
将最大的数排在最后一位,按从小到大顺序:
来自mooc,翁凯老师的代码
#include <stdio.h>
int max(int a[],int len)
{
int maxid = 0; //先假设数组内最大的数的下标为0;
for (int i=1;i<len;i++) //让i从下标1开始判断
{
if (a[i] > a[maxid]) //当i对饮下标的数大于maxid对应的数,则最大数的下标(maxid)为当前i的下标
{
maxid = i;
}
}
return maxid;
}
int main()
{
int a[]={2,45,6,12,87,34,90,24,23,11,65};
int len = sizeof(a)/sizeof(a[0]); //数组的长度
for (int i=len-1;i>0;i--) //i是数组目前最大的下标,当排序时,最大的数挪到最大的下标时,i就下标-1,也就变成倒数第二个下标
{
int maxid = max(a,i+1); //调用函数并且,maxid的意思是当前数组范围内最大的数的下标
int t = a[maxid]; //现将最大的数的值保存起来
a[maxid] = a[i]; //让最大的数的位置与最后一个位置的数互换
a[i] = t; //每次互换后,i为1,因为最大数已经挪到最后一个位置上。并且最后一次循环时,满足i为1,则数组内还剩2个数去判断。
} //循环结束时,i为0, 则数组内还是最后一个数。也就不用判断了。
for (int i=0;i<len;i++)
{
printf("%d ",a[i]);
}
return 0;
}