合并数组并排序,归并排序合并数组
将两个数组合并到一个数组并排序的c语言程序编写
这里是借用第三个数组。
原理:先将两个数组复制到第三个数组中,然后对第三个数组排序
如果不使用第三个函数,那么下面这个函数一样可以做到,不过函数声明就要改成:
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;
}
C程序将两个数组合并排序
原理:先将两个数组复制到第三个数组中,然后对第三个数组排序
如果不使用第三个函数,那么下面这个函数一样可以做到,不过函数声明就要改成:
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;
}
C语言两个数组里边有十个元素把两个合并成一个并排序
#include stdio.h
#include stdlib.h
#include time.h
#define NUM 10
void paixu(int * array, int n)//选择排序法
{
int i, j, temp, pos;
for(i=0;in;i++)
{
pos = i;
for(j=i+1;jn;j++) if(array[pos] array[j]) pos = j;
if(pos != i) {temp = array[pos]; array[pos] = array[i]; array[i] = temp;}
}
}
void hebing(int * array, const int * arrA, int nA, const int * arrB, int nB)//合并数据,这个是并归排序的基本函数,里面加上递归调用就是并归排序
{
int pos = 0, posA = 0, posB = 0;
while(posAnA posB nB)
{
if(arrA[posA] arrB[posB]) array[pos++] = arrA[posA++];
else array[pos++] = arrB[posB++];
}
if(posAnA) while(posAnA) array[pos++] = arrA[posA++];
if(posBnB) while(posBnB) array[pos++] = arrB[posB++];
}
void print(int *a, int n)
{
int i;
for(i=0; in;i++)
{
printf("%6d", a[i]);
if(i%10 == 9) printf("\n");
}
}
int main()
{
int a[NUM], b[NUM], c[NUM*2], i;
srand(time(NULL));
for(i=0;iNUM;i++) {a[i] = rand() 0xF; b[i] = rand() 0xF;}//随机数作为输入
printf("原始数据:\n");
print(a, NUM);
print(b, NUM);
paixu(a, NUM);
paixu(b, NUM);
printf("排序后的数据:\n");
print(a, NUM);
print(b, NUM);
hebing(c, a, NUM, b, NUM);
printf("合并后的数据:\n");
print(c, NUM*2);
return 0;
}
vb我想把两个随机数组合并后排序现在两个随机数组都可以出来然后合并要怎样做呢?
给一个思路:第一是新建一个数组,把两个数组元素传递过去,这个比较简单;
第二:把其中一个数组做为母数组,把另一个数组合并过来,这个用到数组保护机制如下:
Option Explicit
Dim a(): Dim b()
Private Sub Command1_Click()? ? '初始化数组A B
Dim i As Integer
'重新定义数组长度,并赋值
ReDim a(5)
ReDim b(4)
For i = 0 To 5
a(i) = i
Print "数组a" "(" i ")" "=" a(i)
Next i
For i = 0 To 4
b(i) = 1 i
Print "数组b" "(" i ")" "=" b(i)
Next i
End Sub
Private Sub MergeArr_cmd_Click()? ?'合并A 和 B两个数组
Dim s As Integer
Dim h As Integer
Dim i As Integer
h = UBound(a)
s = UBound(a) + UBound(b) + 1
ReDim Preserve a(s)? ? '采用保护机制,把数组A元素加长,长度为:数组A和B的长度之和
For i = 1 To UBound(b) + 1? ? '将数组B元素加入到数组A中
a(h + i) = b(i - 1)
Next i
For i = 0 To s
Print "数组a" "(" i ")" "=" a(i)
Next
End Sub
如何合并两个数组为一个数组,并且排序
我理解的意思是:
1.String[] m={1,2,3};
String[] n={1,3,5};
合并后:String mn={1,2,3,1,3,5};
//如果是这样:就是循环两个数组,把数据存到一个新的数组里即可。
2.String[] m={1,2,3};
String[] n={1,3,5};
合并后:String mn={1,1,2,3,3,5};
//如果是这样:就是循环两个数组,把数据存到一个新的数组里,再进行排序即可。
编写JAVA程序,实现两个数组的合并,并按升序排列合并后的数组
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?ComparatorString?()
{
@Override
public?int?compare?(?String?o1,?String?o2?)
{
int?a?=?Integer.parseInt?(o1),?b?=?Integer.parseInt?(o2);
if?(a??b)
{
return?1;
}
else?if?(a??b)
{
return?-1;
}
else
{
return?0;
}
}
});
System.out.println?(Arrays.toString?(result));
}
}