有两个不同的数组,将两个数组中的值交叉排序给另一个数组。
arr=1 ,3,5,7,9.
brr=2,4,6,8,410.
结果为crr=1,2,3,4,5,6,7,8,9,10
#include<stdio.h>
int main()
{
int m,n,i,j,temp,seat;
m=5;
int a[1000] = {1,3,5,7,9};
for(i=0;i<m-1;i++)
{
seat=i;
j=i+1;
while(j<m)
{
if(a[seat]<a[j])
{
seat=j;
}
j++;
}
if(seat!=i)
{
temp=a[i];
a[i]=a[seat];
a[seat]=temp;
}
}
n = 5;
int b[1000] = {2,4,6,8,10};
for(i=0;i<n-1;i++)
{
seat=i;
j=i+1;
while(j<n)
{
if(b[seat]<b[j])
{
seat=j;
}
j++;
}
if(seat!=i)
{
temp=b[i];
b[i]=b[seat];
b[seat]=temp;
}
}
int c[m+n];
for(i=0;i<m+n;i++)
{
if(i<=m-1)
c[i]=a[i];
else
c[i]=b[i-m];
}
for(i=0;i<m+n-1;i++)
{
seat=i;
j=i+1;
while(j<m+n)
{
if(c[seat]<c[j])
{
seat=j;
}
j++;
}
if(seat!=i)
{
temp=c[i];
c[i]=c[seat];
c[seat]=temp;
}
}
printf("crr=");
for(i=0;i<m+n-1;i++)
printf("%d,",11-c[i]);
printf("%d",11-c[i]);
}
arr和brr已经是递增序列了吗?
先合并两个数组,在采用冒泡进行排序。以下是一个函数实现
int merge_sort(int a[], int b[], int c[], int n, int m) {
int i, j, k;
for (i = 0; i < n; i++) {
c[i] = a[i];
}
for (j = 0; j < m; j++) {
c[i + j] = b[j];
}
for (i = 0; i < n + m - 1; i++) {
for (k = i + 1; k < n + m; k++) {
if (c[i] > c[k]) {
int temp = c[i];
c[i] = c[k];
c[k] = temp;
}
}
}
return 0;
}
如果对你有帮助,还请点个采纳,万分感谢!