我想通过[]执行线性搜索,并将结果附加到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.当找到最小值时,如何停止循环?
答案 0 :(得分:0)
如果b[0]
是a[0]
中的最小值,则永远不会初始化a
。
如果您希望在b
中有一个已排序的输出,那么您应该在b
语句中进行比较,包括if
。
如果某些数字在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];
}
}
}
}