数据结构-合并两个已经排序的数组

合并两个已经排序的数组

 1 /// <summary>
 2         /// 合并两个已经排序的数组
 3         /// </summary>
 4         /// <param name="arr1"></param>
 5         /// <param name="arr2"></param>
 6         public static void MergeSortedArray(int[] arr1,int[] arr2)
 7         {
 8             List<int> list = new List<int>();
 9             int i = 0;
10             int j = 0;
11             do
12             {
13                 if (arr1[i] < arr2[j])
14                 {
15                     list.Add(arr1[i]);
16                     i++;
17                 }
18                 else if (arr1[i] == arr2[j])
19                 {
20                     list.Add(arr1[i]);
21                     list.Add(arr2[j]);
22                     i++;
23                     j++;
24                 }
25                 else if (arr1[i] > arr2[j])
26                 {
27                     list.Add(arr2[j]);
28                     j++;
29                 }
30             }
31             while (i < arr1.Length && j < arr2.Length);
32             //如果有的数组还没有添加结束,就将剩下的元素都添加到新集合中;
33             if(i<arr1.Length)
34             {
35                 for(;i<arr1.Length;i++)
36                 {
37                     list.Add(arr1[i]);
38                 }
39             }
40             else if (j < arr2.Length)
41             {
42                 for (; j < arr2.Length; j++)
43                 {
44                     list.Add(arr2[j]);
45                 }
46             }
47
48             foreach(var item in list)
49             {
50                 Console.WriteLine(item+",");
51             }
52             Console.ReadKey();
53         }

原文地址:https://www.cnblogs.com/luoshengjie/p/10366220.html

时间: 2024-10-10 20:28:00

数据结构-合并两个已经排序的数组的相关文章

算法研究之合并两个已排序的数组java版

package com.zken.test; /** * @author iamzken * 2015-8-28 * 合并两个有序数组 * */ public class Sorter2 { public static void merge2SortedArray(int[] a , int[] b , int[] c){ //a数组的当前索引 int i = 0; //b数组的当前索引 int j = 0; //c数组的当前索引 int k = 0; //循环,只要a和b都没有遍历完就一直循环

88. 合并两个已排序的数组 Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initi

【C练习】两个已经从小到大的数组合并成为一个从小到大排序的数组

两个已经从小到大的数组合并成为一个从小到大排序的数组 1 #include<stdio.h> 2 int main() 3 { 4 int m,n,i,j,k,tem=0; 5 printf("这两个数组分别有多少个数:\n"); 6 scanf("%d%d",&m,&n); 7 int a[m],b[n],c[m+n]; 8 printf("从小到大输入%d个数:\n",m); 9 for(i=0;i<m;i+

剑指Offer15 合并两个已排序链表

1 /************************************************************************* 2 > File Name: 15_MergeTwoSortList.cpp 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月30日 星期二 15时49分47秒 6 ********************************

合并排序,将两个已经排序的数组合并成一个数组

#include<iostream> #include<string.h> using namespace std; void MergeArray(int a[],int alen,int b[],int blen) { int len=alen+blen-1; alen--; blen--; while (alen>=0 && blen>=0) { if (a[alen]>b[blen]) { a[len--]=a[alen--]; }else

合并两个已经排序的链表

问题描述:给定两个链表的头指针,并且这两个链表都已经有顺序了,将这两个链表合并成一个链表,并且使合并后的链表依然有序. 分析:这个问题有点类似于归并排序中的归并步骤.具体思想如下: 首先比较两个链表的头结点,并将较小的作为合并后链表的头节点,然后移动指针,再比较两个指针的节点,以此类推, 如果其中一个链表已经结束了,则将另一个链表的其余节点全部移到合并的链表中. 由于比较简单,我就不再写写具体的程序代码了,读者可以自行验证.

合并两个递增排序的链表

1 typedef struct Link 2 { 3 int data; 4 struct Link* next; 5 }NODE,*pNODE; 1 NODE *merge(pNODE *pphead1, pNODE *pphead2) 2 { 3 NODE *mergeHead = NULL, *ptail = NULL; 4 pNODE pcur1 = *pphead1, pcur2 = *pphead2; 5 if(pcur1 == NULL) 6 return pcur2; 7 el

链表——(循环和递归)合并两个排序链表

题目:合并两个递增排序链表,使新链表仍然按照递增排序. 方法一: 基于递归的方法,链表first和链表second各有m和n个结点,新链表的头结点为两个链表中头结点较小 的一个,当找到该头结点时(假设为first的头结点),仍需对first的m-1个结点和second的n个结点合并. 可以看出,子问题和原问题相同,因此可以利用递归解决. 代码如下: /** * Definition for singly-linked list. * public class ListNode { * int v

C++算法之 合并两个有序链表

题目:合并两个已经排序好的链表 方法1: 两个链表 比如链表1: 1->3->5->7->9 链表2:  2->4->6->8->10 跟我们合并两个数组一样,链表1的头结点  和链表2的头节点比较,如果链表1头节点的值大于链表2头接点的值, 那么链表2的头结点为合并链表的头结点,那么链表1的头节点继续和链表2的第二个节点(剩余链表2的头结点) 作比较,但一个链表遍历完之后,如果另外一个链表还没有遍历完,因为链表本来就是排序的,所以让合并链表的 尾巴节点指向