c语言将两个数组合并 如何用C语言编程将两个有序数组a,b合并成一个数组c?
如何用C语言编程将两个有序数组a,b合并成一个数组c?
基本思想:
1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组;
2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完;
3)将另一个数组剩余元素抄入C数组,合并排序完成。
#include
void main()
{
int
a[10],b[10],c[20],i,ia,ib,ic
printf("please input the first arrayn")
for(i=0i
scanf("%d",&a[i])
for(i=0i
scanf("%d",&b[i])
printf("n")
ia=0ib=0ic=0
while(ia
{
if(a[ia]
{
c[ic]=a[ia]
ia
}
else{
c[ic]=b[ib]
ib
}
ic
}
while(ia
{
c[ic]=a[ia]
ia
ic
}
while(ib
{
c[ic]=b[ib]
ib
ic
}
for(i=0i
{
printf("]",c[i])}
}
将两个按升序排列的数组合并成一个数组?
package test import java.util.Arrays import java.util.Comparator public class JButtonTest { public static void main ( String[] args ) { int[] arr1 = { 3, 1, 23 } int[] arr2 = { 27, 7, 2 } String temp = Arrays.toString (arr1) Arrays.toString (arr2) temp = temp.replaceAll ("][", ",").replaceAll ("s", "").replaceAll ("[[]]", "") String[] result = temp.split (",") System.out.println (Arrays.toString (result)) Arrays.sort (result, new Comparator
用C 写一个函数,实现把两个有序数组合并成一个有序数组?
#include
#include
#include
#include
using namespace std
const int M=5
const int N=6
void sort(int[],int)
void merge(int*,int*,int*,int,int)
int main(){
int i,a[M],b[N],c[M N]
srand((unsigned int)time(NULL))
cout
for(i=0i
如何将两个有序数组合并到一个有序数组中?
这很简单:代码如下(此处不考虑Object,假设为int[]):publicint[]getNewArrays(int[]one,int[]two){intlen=one.lengthintlen2=two.lengthintlen3=oneLength twoLength//得到两数组长度和int[]newArray=newint[len3]//创建第三个数组,长度=两数组长度之和for(inti=0i<len3i ){if(i<len){//如果i<len,则赋值为one中的元素newArray[i]=one[i]continue}intt=i-len//t从0开始newArray[i]=two[t]//后面的元素赋值为two中的元素}//对第三个数组一一赋值,值为前两个数组Arrays.sort(newArray)//对第三个数组排序此处使用的是java自带的sort方法//也可使用冒泡排序,此处不演示returnnewArray}完
如何将两个数组先合并然后再进行排序?
这里是借用第三个数组。原理:先将两个数组复制到第三个数组中,然后对第三个数组排序如果不使用第三个函数,那么下面这个函数一样可以做到,不过函数声明就要改成:char* fun(char *dest, char *str, char *dest) /*------------------------------函数--------------------------------*/char* fun(char *str1,char *str2,char *dest) //前提,目标数组能偶容纳两个数组{ char *tmp=dest char *tmp_dest=dest if(!dest) return NULL while(*str1) //将str1复制进dest *tmp =*str1 while(*str2) //将str2复制进dest *tmp =*str2 tmp_dest-- // while(* tmp_dest) //选择排序法 { char *tmp_px=NULL tmp=tmp_dest while(* tmp) //找到后面一串的最值 { if(*tmp_dest<*tmp) tmp_px=tmp } if(!tmp_px) { char ch=*tmp_dest *tmp_dest=*tmp_px *tmp_px=ch } } return dest}
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。