zoukankan      html  css  js  c++  java
  • 数组有序子序列的合并问题

    问题描述:一个数组存在前后两个子序列,并且每个子序列都是有序的,两个子序列的分界处为n.实现对该数组两个子序列合并并进行从小到大的排序。
    样例输入:数组[1,5,6,7,9,2,4,8,10,13,14],分界处n=5,
    样例输出:[1,2,4,5,6,7,8,9,10,13,14]

    一种实现方式如下(Java版):

     1 import java.util.Arrays;
     2 import java.util.Scanner;
     3 
     4 /**
     5  * 实现对一个数组中两个子有序段进行合并
     6  * 例如:序列{1,5,6,7,9,2,4,8,10,13,14},合并后序列为{1,2,4,5,6,7,8,9,10,13,14}
     7  * @author JiaJoa
     8  *
     9  */
    10 public class Algorithm_Main {
    11 
    12     public static void main(String[] args) {
    13         Scanner in = new Scanner(System.in);
    14         String str = in.nextLine();  //输入数组的序列
    15         String[] nums = str.split(",");
    16         int[] num = new int[nums.length];
    17         for(int i=0;i<nums.length;i++)
    18             num[i] = Integer.parseInt(nums[i]);
    19         int n = in.nextInt();  //输入子序列分界点位置
    20         getResult(num,n);
    21         System.out.println(Arrays.toString(num)); //打印合并的序列
    22         in.close();
    23     }
    24     
    25     //子序列合并
    26     public static void getResult(int[] num,int n){
    27         for(int i=0;i<n;i++){
    28             if(num[n]<num[i]){
    29                 int temp = num[n];
    30                 num[n] = num[i];
    31                 num[i] = temp;
    32                 sort(num,i);  //保证第二个子序列重新有序
    33             }
    34         }
    35     }
    36     
    37     //对第二个子序列重新排序以保证其有序性
    38     public static void sort(int[] num,int i){
    39         for(int j=i;j<num.length-1;j++){
    40             if(num[j+1]<num[j]){
    41                 int temp = num[j+1];
    42                 num[j+1] = num[j];
    43                 num[j] = temp;
    44             }
    45         }
    46     }
    47 }
  • 相关阅读:
    5.单表查询
    3.数据类型1
    3.数据类型2
    mysql用户操作和权限管理
    【剑指Offer】面试题27. 二叉树的镜像
    【LeetCode】160. 相交链表
    【剑指Offer】面试题52. 两个链表的第一个公共节点
    【LeetCode】206. 反转链表
    【剑指Offer】面试题24. 反转链表
    LeetCode题解分类汇总(包括剑指Offer和程序员面试金典,持续更新)
  • 原文地址:https://www.cnblogs.com/JiaJoa/p/7809812.html
Copyright © 2011-2022 走看看