用C语言编写“给十个数从大到小排序”

如题所述

第1个回答  2008-06-23
void sort(int *a,int n)//n代表数组个数,a代表要排序的数组
{
int i,j,m;
for(i=0;i<n-1;i++)
for(j=0;j<9-i;j++)
if(a[i]<a[i+1])
{m=a[i];
a[i]=a[i+1];
a[i+1]=m;
}
}//end function
main()
{
int a[10],i;
for(i=0;i<=9;i++)//输入10个数据
{printf("input %d :",i+1);
scanf("%d",a[i]);
}
sort(a,10);//将数组排序
/*以下是输出部分*/
for(i=0;i<=9;i++)
prinft("%d",a[i]);
}
第2个回答  2008-06-23
#include<stdio.h>
#include<stdlib.h>
int cmp(const int *a, const int *b)
{
return *b - *a;
}

int main(int argc, char *argv[])
{
int a[10];
/*对数组a赋值*/
qsort(a, 10, sizeof(*a), cmp);//对数组a从大到小排序
return 0;
}
第3个回答  推荐于2017-09-19
冒泡排序法:
void rank1(int a[],int n)
{int i,j,t;
for (i=0;i<n-1;i++)
{
for(j=n-1;j>i;j--)
if (a[j-1]>a[j]) {t=a[j-1];a[j-1]=a[j];a[j]=t;}
};
}

优化后的程序:
void rank1(int a[],int n)
{int i,j,t,flag;
for (i=0;i<n-1;i++)
{flag=0;
for(j=n-1;j>i;j--)
if (a[j-1]>a[j]) {t=a[j-1];a[j-1]=a[j];a[j]=t;flag=1;}
if (flag==0) break;
}
}本回答被提问者采纳
相似回答