C语言编写一个对数组中无序元素进行排序的程序

不知道错在哪里
#include<stdio.h>
void paiXu(int a[])
{
int n=5,i,m,temp=0;
for(i=0;i<n;i++)
{
if(i!=0)
{
for(m=0;m<=i;m++)
{
if(a[i]<a[m])
{
temp=a[i];
a[i]=a[m];
a[m]=temp;
}
}
}

}
for(i=0;i<5;i++)
printf("%d ",a[i]);
}

void main()
{
int b[5],i,j;
printf("请输入数组元素:");
for(i=0;i<5;i++)
{
scanf("%d",&j);
b[i]=j;
}

paiXu(b[5]);

}

第1个回答  2015-11-25
#include <stdio.h>
#include <stdlib.h>#define NA 5
#define NB 5void Sort(int a[], int nLen)
{
for(int i = 0; i < nLen - 1; i++)
{
int n = i;
int p = a[i];
for(int j = i + 1; j < nLen; j++)
{
if(a[j] < p)
{
p = a[j];
n = j;
}
}
int t = a[i];
a[i] = a[n];
a[n] = t;
}
}int* Merge(int a[], int nLena, int b[], int nLenb)
{
int* c = (int*)malloc((nLena + nLenb)*sizeof(int));
int i = 0;
int j = 0;
int n =0;
while (i < nLena && j < nLenb)
{
if (a[i] <= b[j])
{
c[n++] = a[i++];
}
else
{
c[n++] = b[j++];
}
}
if (i < nLena)
{
for (; i < nLena; i++)
{
c[n++] = a[i];
}
}
if (j < nLenb)
{
for (; j < nLenb; j++)
{
c[n++] = b[j];
}
}
return c;
}void main()
{
int a[NA] = {0};
int b[NB] = {0};
printf("Input %d number for a[]: ", NA);
for (int i = 0; i < NA; i++)
{
scanf("%d", &a[i]);
}
printf("Input %d number for b[]: ", NB);
for (i = 0; i < NB; i++)
{
scanf("%d", &b[i]);
}
Sort(a, NA);
Sort(b, NB);
printf("a[] after sort: ");
for (i = 0; i < NA; i++)
{
printf("%d ", a[i]);
}
printf("\nb[] after sort: ");
for (i = 0; i < NB; i++)
{
printf("%d ", b[i]);
}
int *c = Merge(a, NA, b, NB);
printf("\na[] b[] after merge: ");
for (i = 0; i < NA + NB; i++)
{
printf("%d ", c[i]);
}
printf("\n");
}
第2个回答  2015-11-25
图片不清啊,发代码出来追问

已发

追答

把你排序函数里面的if(i != 0)去掉。另外你那个传参paiXu(b[5]);修改paiXu(b);就可以了

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网