C语言排序
将整形数组按从小到大排序,然后在这个数组中插入一个新的数,使得这个数组仍然有序,用C语言怎么做,求程序和解释
将整形数组按从小到大排序,然后在这个数组中插入一个新的数,使得这个数组仍然有序,用C语言怎么做,求程序和解释
2016-11-10
#include<stdio.h>
#define N 5
int main()
{
int i,j,p,n,temp;
int a[N],b[N+1];//a[N]为原数组,b[N+1]为插入后的数组
printf("请输入%d个数\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);//a[N]的输入
for(i=0;i<N-1;i++)//选择法排序,按升序排好a[N]
{
p=i;
for(j=i+1;j<N;j++)
if(a[i]>a[j])
p=j;
if(p!=j)
{
temp = a[p];
a[p] = a[i];
a[i] = temp;
}
}
for(i=0;i<N;i++)//输出a[N]的每一项
printf("%d ",a[i]);
printf("\n");
printf("请输入一个数\n");
scanf("%d",&n);//插入一个数
for(i=0;i<N;i++)
b[i] = a[i];
b[N] = n; //b[N+1]的输入
for(i=0;i<N;i++)//选择法排序,按升序排好b[N+1]
{
p=i;
for(j=i+1;j<N+1;j++)
if(b[i]>b[j])
p=j;
if(p!=j)
{
temp = b[p];
b[p] = b[i];
b[i] = temp;
}
}
for(i=0;i<N+1;i++)//输出b[N+1]的每一项
printf("%d ",b[i]);
printf("\n");
}
各处都有解释,不懂再问我!
举报