用Java组织数组中的数字

时间:2013-12-04 04:04:03

标签: java arrays int organization

我试图在数组中组织从最小到最大的随机数。 我提出了一个循环,我认为它应该工作但有很多逻辑错误。

 for(int z=0; z<=999;z++){
    for(w=1; w<=999;w++){
      if(z<w){
        if(numberArray[z]<numberArray[w])
         temp=numberArray[w];
        }
    }
    numberArray[z]=temp;
  }

任何人都可以告诉我如何解决这个或他们自己的算法吗?

3 个答案:

答案 0 :(得分:1)

有几种方法可以在Java中对数组进行排序。在这里,我发布了其中3个:核心库,以及您可以自己制作的2种算法。

1)核心一:这只是一行代码。我建议使用它 - 简单,非常有效,与以下两种解决方案相比。

Arrays.sort(myArray);

2)选择排序:找到数组中的最小值,将其移动到第一个位置,找到下一个最低值,移到第二个位置等等。

public void selectionSort(Comparable[] a)
{
    for(int index = 0; index < a.length; index++)
    {
        // find the smallest one in the array from index : end
        int smallest = indexOfMin(a, index);
        // swap the value at index and the value at the smallest one found
        Comparable temp = a[smallest];
        a[smallest] = a[index];
        display.update();
        a[index] = temp;
    }
}

3)插入排序:将数组中的每个元素插入到不断增长的排序值序列中,并在数组末尾完成。

public void insertionSort(Comparable[] a)
{
    for(int i = 1; i < a.length; i++)
    {
        insert(a, i);
    }
}

public void insert(Comparable[] a, int nextIndex)
{
    int index = 0;
    Comparable finalObject = a[nextIndex];
    // Let us first find the first occurence of a comparable greater than our comparable
    while(finalObject.compareTo(a[index]) > 0)
        index++;
    for(int i = (nextIndex-1); i >= index; i--)
        a[i+1] = a[i];
    a[index] = finalObject;
}

答案 1 :(得分:0)

Arrays.sort()是一种快速简便的方式。

如果您需要更强大的功能,请考虑 PriorityQueues

This link是关于SO的另一个问题,答案很好。

答案 2 :(得分:0)

一个班轮:

Arrays.sort(numberArray);

或最大到最少订购:

Arrays.sort(numberArray, Collections.reverseOrder());

或者甚至更好,使用二进制搜索树将其内容按排序顺序保存,这对于非常动态的集合非常有用,因为添加操作比完整的就地排序更便宜,内存更明智和时间:< / p>

TreeSet<int> set = new TreeSet<int>();
set.add(10);
set.add(4);
set.add(11);

set.toString();
// prints 4, 10, 11