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

2024年11月17日 22:34
有3个网友回答
网友(1):

void sort(int *a,int n)//n代表数组个数,a代表要排序的数组
{
int i,j,m;
for(i=0;ifor(j=0;j<9-i;j++)
if(a[i]{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):

#include
#include
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):

冒泡排序法:
void rank1(int a[],int n)
{int i,j,t;
for (i=0;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{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;
}
}