题目描述:输入整型数组和排序标识,对其元素按照升序或降序进行排序_牛客题霸_牛客网
很简单的题,我还分别用冒泡和选择排序写了升序和降序函数,实际上没必要,排一次序就行,另一个顺序控制数组下标进行逆序打印即可。
以下为代码实现:
#include <stdio.h>
#define N 1000
int n;
void ascend_sort(int *p) //升序排列
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(*(p+j)>*(p+j+1))
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
}
void descend_sort(int *p)
{
int i,j,max,temp;
for(i=0;i<n-1;i++)
{
max=i;
for(j=i+1;j<n;j++)
{
if(p[max]<p[j])
{
max=j;
}
}
if(max!=i)
{
temp=p[i];
p[i]=p[max];
p[max]=temp;
}
}
}
int main()
{
int i,arr[N];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
scanf("%d",&i);
if(i==0)
{
ascend_sort(arr);
}
else
{
descend_sort(arr);
}
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
return 0;
}