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对数组进行排序并将其附加到另一个数组中的主要内容,如果未能解决你的问题,请参考以下文章
找到对给定数组进行排序所需的remove-then-append操作的数量