Home  >  Article  >  Java  >  Java implementation example of merging two ordered sequence algorithms

Java implementation example of merging two ordered sequence algorithms

黄舟
黄舟Original
2017-09-16 10:44:151449browse

This article mainly introduces the algorithm for merging two ordered sequences in Java. It briefly describes the principle of the sequence merging algorithm and the specific operation steps and related implementation techniques for merging ordered sequences in Java. Friends in need can refer to it

The example in this article describes the Java implementation of merging two ordered sequence algorithms. Share it with everyone for your reference, the details are as follows:

Problem description

Input: sequenceA230e29eb5fb2395bed95f04b7b73e9a1, wherea0a078c73494d9e8d895e3c28716b690f6, whereb015c96401c3beebb15851f7c7b1e3ea89
C=A592b05092b1df436d75d38dbcd7381be
From B and C respectively Take a number for comparison and put the smaller one into R. If the number is in B, continue to take the next smallest number in B; if it is in C, do the same. All numbers are in R.
Ri=MIN(B)<=MIN(C)?MIN(B):MIN(C)

If B or C has no more numbers to obtain, Then fill in R with all the numbers in the other sequence.

Ri=(MIN(B)MIN(C))

Algorithm implementation


/**
 *
 * @author Chuck
 *
 */
public class Merge {
  /**
   * 合并两个有序序列
   * @param A 待合并序列
   * @param q 第二个序列开始数组下标
   * @return 合并后的新数组
   */
  public static int[] merge(int [] A,int q){
    //创建数组
    int n = A.length;
    int [] R = new int[n];
    int i = 0;
    int j = q+1;
    int k = 0;
    //如果两个数组B 和 C中都有数据则选择更小的加入到R中并获取下一个
    while(i<=q&&j<=n-1){
      if(A[i]<=A[j]){
        R[k]=A[i];
        i++;
      }else{
        R[k]=A[j];
        j++;
      }
      k++;
    }
    //如果B中有数据则把所有数据加入到R中
    while(i<=q) R[k++] = A[i++];
    //如果C中有数据则把所有数据加入到R中
    while(j<n-1) R[k++] = A[j++];
    return R;
  }
  public static void main(String [] args){
    int [] A = {5,6,7,8,9,44,55,66,788,1,3,10,45,59,70,188};
    int q = 8;
    int [] R = Merge.merge(A, q);
    for(int i=0;i<R.length;i++){
      System.out.print(R[i] +" ");
    }
  }
}

Algorithm time

##f(n)=q+1+r−q=r+1

Here r is the input size of the array, so the worst-case running time of the algorithm is:

f(n)=O(n)

Demo results


1 3 5 6 7 8 9 10 44 45 55 59 66 70 188 788

The above is the detailed content of Java implementation example of merging two ordered sequence algorithms. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn