对数组中的数从大到小进行排列
第一种方法:
1.定义俩个变量,一个用来记录最大的元素的位置,一个用来表示数组中最大的元素。
2.遍历。
3.输出数组。
#include<stdio.h>
int main()
{
int a[10]={20,23,12,91,19,36,39,21,52,38};//定义数组
int i,j,k;
int temp;//定义变量,表示最大的数组元素
for(i=0;i<10;i++)
{
temp=a[i];//假设当前数字为最大值
k=i;//记录最大元素位置
for(j=i;j<10;j++)
{
if(a[j]>temp)//如果后续元素中有比前面设定的最大值还大
{
temp=a[j];//重新设定最大值
k=j;//修正最大元素位置
}
}
a[k]=a[i];//将最大的数组元素和当前排序次数对应的数组元素互换
a[i]=temp;
}
for(i=0;i<10;i++)//输出数组
{
printf("%d\t",a[i]);//用制表位分隔元素
}
return 0;
}
第二种方法:
该方法使用到了指针,减少了代码量,更加简洁方便。
#include<stdio.h>
int main()
{
int a[10]={20,23,12,91,19,36,39,21,52,38};
int i,j,t;
int *p=a; //使用指针
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(*(p+j)<*(p+j+1))
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
for(i=0;i<10;i++) //从大到小输出
{
printf("%d\t",*(p+i));
}
return 0;
}
以上是我个人对数组中的数从大到小进行排列的代码编写,希望帮助到有需要的人,也希望觉得还可以的人给个支持,谢谢啦~