上机作业
将两个从小到大有序整形数组a,b合并。
直接上代码
插入法:(限制性较大)
如果两个数组长度不一,则需要加上一个判断,一个数组比较完后,另一个直接移入c中。
#include<stdio.h>
int main()
{
int a[5] ;
int b[20] ;
int i, j, m;
printf("输入两个有五个数字的有序数列:\n"); \\此处数字可换
for (i = 0; i < 5; i++)
{
scanf_s("%d", &a[i]);
}
printf("\n");
for (i = 0; i < 5; i++)
{
scanf_s("%d", &b[i]);
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5+i; j++)
{
if (a[i] < b[j])
break;
}
m = j;
for (j = 4+i; j >=m; j--)
{
b[j + 1] = b[j];
}
b[j+1] = a[i];
}
for (i = 0; i < 10; i++)
{
printf("%d\n", b[i]);
} return 0;
}
当然也可以用冒泡序列
数组长度自己定义。我只举个例子。
#include<stdio.h>
int main()
{
int a[5] = { 1,3,9,26,45}, b[5] = {2,7,9,11,67}, c[10];
int i,j,temp;
for (i = 0; i < 5; i++)
c[i] = a[i];
for (i = 0; i < 5; i++)
c[i + 5] = b[i];
for (i = 0; i < 10; i++)
{
for (j = 0; j < 9; j++)
{
if (c[j] > c[j + 1])
{
temp = c[j + 1];
c[j + 1] = c[j];
c[j] = temp;
}
}
}
for (j = 0; j < 10; j++)
printf("%d ", c[j]);
return 0;
}
初学,见谅