Java对数组进行排序并将其附加到另一个数组中

Posted

技术标签:

【中文标题】Java对数组进行排序并将其附加到另一个数组中【英文标题】:Java sorting of an array and append it in another array 【发布时间】:2018-08-13 11:51:12 【问题描述】:

我想通过 a[] 执行线性搜索并将结果附加到 b[]。 这是我的代码:

public class sorting 
    static int a[]=10,12,14,2,1,3;
    static int  b[]=new int[a.length];

public static void fn()

    for(int i=0;i<a.length;i++)
    
        for(int j=1;j<a.length;j++)
        
            if(a[i]>a[j])
                 b[i]=a[j];
            
        
       

我得到的输出是 333101。我希望是 1,2,8,10,12,30。

即使找到 1 作为最小值,循环继续并找到 10>3 并将 1 替换为 3。找到最小值时如何停止循环?

【问题讨论】:

int[] b = /* you try something first */ ; 到目前为止你尝试过什么?你被困在哪里了?如所写,它本质上是一个“为我编写代码”的问题。也许这是课堂作业或类似的东西。请编辑以显示您到目前为止所做的工作。 请编辑您的问题,以包含您目前拥有的解决方案的任何代码,以及您可能遇到的任何问题,即minimal reproducible example。 Open letter to students with homework problems 好的,您现在已经编辑了您的问题,这很好。问题是,您只编辑以显示您想要的结果(例如,对a 的内容进行排序,并将排序结果写入b)。很好,你这样做了。但是...您仍然没有展示 尝试过(或正在尝试尝试)的内容。 【参考方案1】:

如果a[0]a 中的最小值,则永远不会初始化b[0]

如果您想在b 中获得排序输出,您可能应该在if 语句中进行比较,包括b

如果a 中的某些数字是负数或倍数,预期的行为会是什么?

类似于您的代码的一种可能方法是

public static void fn() 
    for (int i = 0; i < a.length; i++) 
        b[i] = Integer.MAX_VALUE; // initialize with large value
        for (int j = 0; j < a.length; j++) 
            // search for Minimum bigger than last value already in b
            if (b[i] > a[j] && (i == 0 || a[j] > b[i - 1])) 
                b[i] = a[j];
            
        
    

【讨论】:

以上是关于Java对数组进行排序并将其附加到另一个数组中的主要内容,如果未能解决你的问题,请参考以下文章

使用java比较器对字符数组进行排序

找到对给定数组进行排序所需的remove-then-append操作的数量

从 URL 获取图像并将其附加到数组

如何进行附加输入并将值发送到数组

如何从字符串中获取子字符串并将另一个字符串附加到字符串并将其转换为数组

在JavaScript中将一个数组附加到另​​一个数组[重复]