C语言数组排列怎么做?

如题所述

第1个回答  推荐于2017-12-16
对n个数排序,先输入n,再输入n个数。
选择排序
#include<stdio.h>
int main()
{
int a[100];
int i,j,t,p,n;
while (~scanf("%d",&n))
{
for (i=0;i<n;i++)
scanf("%d",&a[i]);

for (i=0;i<n-1;i++)
{
p=i;
for (j=i+1;j<n;j++)
if (a[p]>a[j])
p=j;

if (p!=j)
{
t=a[p];a[p]=a[i];a[i]=t;
}
}
for (i=0;i<n;i++)
if (i!=n-1)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);

}

return 0;
}

冒泡排序
#include<stdio.h>
int main()
{
int i,j,t,n;int a[1000];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(j=0;j<(n-1);j++)
for(i=0;i<(n-1)-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;i<n;i++)
{
if (i!=n-1)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);
}

return 0;
}本回答被提问者和网友采纳
第2个回答  2011-12-15
具体的题具体分析,这样说不清楚,,,多看看for语句和那个数值交换
第3个回答  2011-12-14
有冒泡法和打擂台法
冒泡法算法是这样的:输入a[n];for(i=0;i<n;i++),for(j=0;j<n-1;j++);判断是否a[j]<a[j+1];若小于则a[j]与a[j+1]互换;输出数组
打擂台法:输入a[n];for(i=0;i<n=1;i++),max=i;for(j=i+1;j<=n-1;j++);判断是否a[max]<a[j];若小于则max=j,判断是否max!=i;若是则a[max]与a[i]互换;输出 数组
相似回答