将2个按升序排列的数列,仍按升序合并存放到另一个数组中,要求,每个数都一次到为,不得在新数组中重新排序

如题所述

第1个回答  2008-04-07
merge sort的一个子程序(假设两个数列是由小到大的)
void merge(int arr1[], int arr2[], int arr3[], int len1, int len2){
//arr1,arr2表示两个数组。arr3是新数组,且长度足够
//len1:arr1的长度 len2同理
int i=0,j=0,pos=0;
for(;i<=len1-1 && j<=len2-1;++pos){
if(arr1[i]<arr2[j])
arr3[pos]=arr1[i++];
else
arr3[pos]=arr2[j++];
}
}
for(;i<=len1-1;++i)
arr3[++pos]=arr1[i];
for(;j<=len2-1;++j)
arr3[++pos]=arr1[j];
}本回答被提问者采纳
第2个回答  2008-04-07
#include <stdio.h>
#include <stdlib.h>

void func(int arr_dst[], int arr_1[], int len_1, int arr_2[], int len_2) {
int i, j, k;

for (i=j=k=0; i<len_1; ++i) {
while (j<len_2 && arr_1[i]>arr_2[j]) {
arr_dst[k++] = arr_2[j];
++j;
}

arr_dst[k++] = arr_1[i];
}

while (j < len_2) {
arr_dst[k++] = arr_2[j++];
}
}

int main() {
int arr1[] = {1, 3, 5, 7, 8, 9},
arr2[] = {2, 4, 5, 6, 7, 10, 23, 26};
int arr[256];
func(arr, arr1, 6, arr2, 8);
for(int i=0; i<14; ++i)
printf("%d ", arr[i]);
puts("\n");
}

编一个程序输入两个数组分别将数组升序排列,然后将两数组合并成一个升序...
编一个程序输入两个数组分别将数组升序排列,然后将两数组合并成一个升序数组  我来答 分享 新浪微博 QQ空间 你的回答被采纳后将获得: 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)1个回答 #热议# 你见过哪些90后家长教育孩子的“神操作”?杰西米特瓦利亚 2018-02-07 · TA获得超过1675个赞...

...都是c++语言的形式,就别复制到这了。。) 编一个程序 将两个按...
先学习C,一定要学好了,c++,c#(目前好像用的不是特别广泛)都是以他为基础扩展来的,java的大部分也是与c想通的,安卓的软件也要依靠java。

编写一个函数实现两个按升序排列的顺序表的合并操作,要用C语言编写,能...
int merge(int* a,int* b,int*c,int alen,int blen){ int i=0,j=0,k=0;\/\/每次将a和b中当前的元素进行比较,并将小的一个存入到c中 while(i<alen && j<blen){ if(a[i]<b[j])c[k]=a[i++];else c[k]=b[j++];k++;} \/\/其中一个数组已经结束,将另一个数组剩余部分全部...

wps升序排列排序有异常 1 10 100 然后才是2
回答:您好,很高兴为您解答! 你将排序所在列的单元格格式修改为“数值”就可以了。 单元格格式为“文本”状态下排序是从最前字符向后面开始排列。 如有疑问,请点击我的头像提问或访问​WPS官方论坛,祝您生活愉快!

excel怎么按成绩升序将所有成绩合并到一个表格?
excel将两次成绩按姓名合并的方法步骤如下 1、打开数据表,三个学科分别在三个表中。2、选中全部表格,点击数据,排序。3、弹出对话框,主要关键字选择姓名,方式选择升序,确定。4、按上边的方法把三个表全部排序,然后复制到一个表中。5、如果每行的姓名一致,选中成绩中间的列,右击 ...

如何将excel中A列中的同一组数据按照升序在B列中排列且填充数据_百度知 ...
单击确定。 在新的列中,从第一行到最后一行,出现了一个步长为1的等差数列。 选中所有数据,包括原来的两列数据,选择“数据”---“排序”。 在排序对话框中选择第一列所在的“列号”。排序方式选择“降序”。 单击确定。 所有数据均排列顺序调换了。 完成!找出B列中有数据A列中没有...

如何将execl表格内的升序排列规则设置为按单元格的合并时间来排序_百 ...
具体如下:1. 第一步,打开电脑中的excel表格。2. 第二步,进入表格页面后,选中标题以下的数据区域。3. 第三步,区域选择完成后,点击上方菜单栏中的方方格子选项。4. 第四步,在下方的工具栏中找到高级排序选项,点击后再选择下拉菜单中的合并单元格排序选项。5. 第五步,在弹出的合并单元格排序...

已知两个长度为m和n的升序链表,将他们合并为长度为m+n的降序链表,最坏...
已知两个长度为m和n的升序链表将他们合并为长度为m+n的降序链表,最坏情况下时间复杂度怎样求,合并时最坏情况下,长为n的链表中前n-1个都比长为m的链表中的第一元素小,而长为n的链表中最后一元素又比长为m的链表中所有元素大。这样比较元素的次数n+m,则时间复杂度为O(m+n)...

...b均已按升序排序,要求将两数组元素值按升序合并入数组c中。求语言编...
int main(){ int k;int c[10];int a[5] = {1, 3, 5, 7, 9};int b[5] = {2, 4, 6, 8, 10};combinate(a, b, c); \/\/数组重组 sort(c); \/\/ 重组后的数组排序 for(k = 0; k < 10; k++){ printf("%d ", c[k]);} printf("\\n");return 0;} ...

在excel表格中的数据要按升序排列,要求其他对应内容也一起变化。怎么...
选中全部(第一行为标题行)--数据--筛选--自动筛选--下拉框 升序排列 或 降序排列 === 你 的数据区域 有合并 单元格 取消掉 选中整张表 右键--设置单元格 格式---对齐---合并单元格 前的 勾 取消掉

相似回答