当前位置: 首页 > 知识库问答 >
问题:

融合2个数组在第三个排序(java)

阴宏爽
2023-03-14

我必须融合之前排序的2个数组,我必须为学校做这件事,但我可以有人可以帮助我,因为现在我要求数组的维度,我实例化了数组,然后我做了一个for来填充它们,我添加了数组的排序,我将把我的代码粘贴到这里。(评论是意大利语)我知道对一些人来说这可能是一个愚蠢的问题,但是,我在编程的第一年,我想提高自己。我提前感谢帮助我的人

    package pFusioneVettoriCacciola;
import java.util.*;

public class Fusione {

    public static void main(String[] args) {
    Scanner tastiera = new Scanner (System.in);
    
    //variabili
    int m=0;
    int n=0;
    int i=0;
    int j=0;
    int f=0;
    int l=0;
    int k = 0;
    int scambio = 0;
    boolean controllo = true;
    int [] vett1;
    int [] vett2;
    int [] fusione;


    //grandezze vettori
        do {
            System.out.println("Inserire grandezza del primo vettore");
            m = tastiera.nextInt();
            if (m<=0)
            {
                System.out.println("Grandezza non valida reinserire ");
            }
        }while(m<=0);
        do {
            System.out.println("Inserire grandezza del secondo vettore");
            n = tastiera.nextInt();
            if (n<=0)
            {
                System.out.println("Grandezza non valida reinserire ");
            }
        }while(n<=0);
        
        //istanzazioni vettori
    vett1= new int [m];
    vett2= new int [n];
    fusione= new int [m+n];
    
        //popolamento vettore uno
        
        for ( i = 0; i < vett1.length; i++) 
        {
        System.out.println("Inserire valore della cella " + i + " (Primo  Vettore)" );
        vett1[i]= tastiera.nextInt();
        }
        
        //popolamento vettore due
        
        for ( i = 0; i < vett2.length; i++) 
        {
        System.out.println("Inserire valore della cella " + i + " (Secondo Vettore)");
        vett2[i]= tastiera.nextInt();
        }
        
        //stampa primo vettore non ordinato
        
        System.out.println("Stampa primo vettore (non ordinato):");
        for ( i = 0; i < vett1.length; i++) 
        {
            System.out.println(vett1[i]);
        }
        
        //stampa secondo vettore non ordinato
        
        System.out.println("Stampa secondo vettore (non ordianto):");
        for ( i = 0; i < vett2.length; i++) 
        {
            System.out.println(vett2[i]);
        }
        
        //ordinamento primo vettore
        
        for (i = 0; i < (vett1.length-1) ; i++) 
        {
            for ( j = 0; j < (vett1.length-1)-i; j++)
            {
                
                if (vett1[j] > vett1[j+1])
                {
                    scambio = vett1[j];
                    vett1[j] = vett1[j+1];
                    vett1[j+1] =scambio;
                }
            }
        }
        
        //ordinamento secondo vettore
        
        for (i = 0; i < (vett2.length-1) ; i++) 
        {
            for ( j = 0; j < (vett2.length-1)-i; j++)
            {
                
                if (vett2[j] > vett2[j+1])
                {
                    scambio = vett2[j];
                    vett2[j] = vett2[j+1];
                    vett2[j+1] =scambio;
                }
            }
        }
        
        //stampa primo vettore ordinato
        
        System.out.println("Stampa primo vettore (ordinato):");
        for ( i = 0; i < vett1.length; i++) 
        {
            System.out.println(vett1[i]);
        }
        
        //stampa secondo vettore ordinato
        
        System.out.println("Stampa secondo vettore (ordianto):");
        for ( i = 0; i < vett2.length; i++) 
        {
            System.out.println(vett2[i]);
        }


        //fusione
        


          //Print Vettore fuso
        
        System.out.println("Ecco il vettore fuso:");
        for ( i = 0; i < fusione.length; i++) 
        {
            System.out.println(fusione[i]);
        }
        
}
}

共有1个答案

麹承
2023-03-14

我希望这个链接能解决你的问题https://www.geeksforgeeks.org/merge-two-sorted-arrays/

 类似资料:
  • 我知道类似的问题也有人问过,我也研究过很多网站。我已经尝试使用一些答案,但我的代码仍然不能工作。 我正在经历以前的作业,以帮助建立我的Java知识。请原谅我的代码中的任何错误,我还在学习Java。 假设两个输入数组中的元素都按非递减顺序排序(例如[0,1,2,2]和[1,2,3,3,4,5])。返回的“合并”数组必须保留此属性(例如[0,1,1,2,2,2,3,3,4,5])。 输入和输出都允许重

  • 问题内容: 这是在采访中问我的,这是我提供的解决方案: 有没有更有效的方法可以做到这一点? 编辑:更正的长度方法。 问题答案: 稍有改进,但是在主循环之后,当到达另一个输入数组的末尾时,可以用来复制其中一个输入数组的结尾。但是,那不会改变你解决方案的性能特征。

  • 我想写一个时间O(n*lgk)的算法,将k个排序数组合并成一个排序数组,其中n是所有输入数组的元素总数。 你能告诉我怎么做吗? 编辑:我编写了以下算法: 你能告诉我这是否正确吗?

  • 问题内容: 给定两个排序数组,如下所示: 我希望输出为: 要么: 我知道我可以执行以下操作: 我只是想知道是否有一种更快的方法,因为我要处理的数组具有数百万个元素。 任何想法都欢迎。谢谢 问题答案: 由于您使用numpy,因此我怀疑bisec根本不会对您有所帮助。因此,我建议您做两件事: 千万 不能 使用,使用方法,而不是这种种取代阵列,避免了复制。 必须使用没有到位的。因此,不要手动使用逻辑。I

  • 我的清单和我认为是正确的方法 但我得到的 为什么?

  • 给定两个未排序的int数组,是否可以使用Java 8或使用任何方法将它们合并到第三个数组中? 有没有可能做这样的事情: 或者是否可以使用任何方法?