合并两个有序序列为一个有序序列

mac2022-06-30  24

思路:

使用归并的思想,每次从两个序列中取出一个元素进行比较,将较小者添加进新序列中,最后将剩余部分直接复制到新序列中

实现代码:

import java.util.Arrays; // 合并两个有序序列为一个有序序列(归并的思想) // 每次从两个序列中取出一个元素进行关键字的比较,将较小者放入c[ ]中,最后将各序列余下的部分直接复制到c[ ]中 public class MergeTwoSequence { public static void main(String[] args) { int[] a = {12, 45, 67, 90, 101}; // 有序表a int[] b = {2, 7, 52, 58, 89, 95}; // 有序表b int[] c = merge(a, b); System.out.println("合并后的有序序列:"+Arrays.toString(c)); } public static int[] merge(int[] a, int[] b){ int m = a.length; int n = b.length; int[] c = new int[m+n]; int i = 0, j = 0, k = 0; while(i<m && j<n){ if(a[i] <= b[j]){ c[k++] = a[i++]; }else{ c[k++] = b[j++]; } } while(i<m){ c[k++] = a[i++]; } while(j<n){ c[k++] = b[j++]; } return c; } }

运行结果:

转载于:https://www.cnblogs.com/paopaolx/p/11335098.html

最新回复(0)