【问题标题】:This code to sort array can sort only one value, Why?这个排序数组的代码只能排序一个值,为什么?
【发布时间】:2014-07-01 19:13:17
【问题描述】:

我编写了这段代码来对一维数组进行排序,但是当我运行这段代码时,黑色表格只向我显示第二个数组中索引 0 中的最小数字... 这是我的代码:

import javax.swing.JOptionPane;

public class anything1 {

    public static void main(String[] args)
    {
        // inserting array
        int[] RandomArray = { 9, 5, 2, 3, 4, 22, 10, 8 };

        // sorting array
        int[] Sortedarray = new int[RandomArray.length];
        int count = 0;
        int x = 0;
        for (int i = 0; i < RandomArray.length; i++) {

            for (int j = 0; j < RandomArray.length; j++) {
                if (i != j & RandomArray[i] != 0) {
                    if (RandomArray[i] < RandomArray[j]) {
                        Sortedarray[count] = RandomArray[i];
                        x = i;
                    } else {
                        Sortedarray[count] = RandomArray[j];
                        i = j;
                        x = j;
                    }
                }
            }
            RandomArray[x] = 0;
            i = count;
            count = count + 1;
            System.out.println("Count is : " + count);

            // break;
        }

        // write random array

        for (int n = 0; n < RandomArray.length; n++) {
            System.out.println("This is new random array:" + RandomArray[n]);
        }

        // write sorted array

        for (int z = 0; z < Sortedarray.length; z++) {
            System.out.println("This is sorted array:" + Sortedarray[z]);
        }
    }
}

这是结果的照片,其他任何值索引 0 为 0 我想知道如何将他的下一个最小数字放在索引 1 中,然后将下一个最小数字放在索引 2 中...

http://im55.gulfup.com/giGcht.png

【问题讨论】:

  • 您的 if 标头 if (i != j &amp; RandomArray[i] != 0) 需要两个 &amp;,而不仅仅是一个。
  • @ChrisTarazi 这不会解决问题,它只会将其转换为短路运算符。
  • @LuiggiMendoza 可能是为什么它只是一个评论而不是一个答案。
  • 这是如何排序的?另外,你为什么要覆盖你的源数组? RandomArray[x] = 0;
  • 并不是说它解决了任何问题,但开始使用适当的缩进(我稍微编辑了您的代码以使其更具可读性)。这将使您的代码更清晰,并帮助您查看变量范围或代码块实际开始或结束的位置(放错位置{} 可能会导致一些烦人的问题)。

标签: java arrays sorting


【解决方案1】:

我宁愿直接在数组中交换值而不是创建一个新数组。您的问题是您在 SortedArray 中为每个 j 循环段落定义值。可以使用这样的东西:

    int [] randomArray = {9,5,2,3,4,22,10,8};
    int swap;

    for(int i=0; i<randomArray.length; i++){
        for(int j=0; j<randomArray.length; j++){
            if(i != j && randomArray[i] > randomArray[j]){
                swap = randomArray[i];
                randomArray[i] = randomArray[j];
                randomArray[j] = swap;
            }
        }
    }

如果你真的需要第二个数组,你可以复制你原来的数组并使用副本。

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 2021-01-31
    • 2016-09-14
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多