我试图在数组中组织从最小到最大的随机数。 我提出了一个循环,我认为它应该工作但有很多逻辑错误。
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;
}
任何人都可以告诉我如何解决这个或他们自己的算法吗?
答案 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)
答案 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