2013-12-04 2 views
0

Im пытается организовать случайные числа в массиве от наименьшего до наибольшего. Я придумал цикл, который, как я думал, должен работать, но имеет множество логических ошибок.организация чисел в массиве в Java

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; 
    } 

Может ли кто-нибудь сказать мне, как исправить это или собственный алгоритм для этого?

+2

Это называется сортировка - сортировка google, сортировка сортировки, быстрая сортировка, сортировка слияния. последние два более продвинутые, первые два более легки в реализации. –

+0

Используйте выбор сортировки, который будет легко разработать. – KethanKumar

+0

. Выйти 'Arrays.sort()', http://docs.oracle.com/javase/7/ docs/api/java/util/Arrays.html – raffian

ответ

0

Arrays.sort() - это быстрый и легкий способ.

Также рассмотрите PriorityQueues, если вам нужно что-то более надежное!

This link - еще один вопрос на SO с отличным ответом.

+0

Почему вы переходите от массива к 'PriorityQueue'? Это кажется немного .. ненужным. –

0

Один лайнер:

Arrays.sort(numberArray); 

Или наибольший по крайней мере заказ:

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

Или еще лучше, использовать бинарное дерево поиска, который держит его содержимое в отсортированном порядке, это отлично подходит для коллекций, являются довольно динамичными, так как операция добавления более дешевая, разумная по времени и времени, чем полная сортировка на месте:

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

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

Существует несколько способов сортировки массива в Java. Здесь я публикую только 3 из них: основную библиотеку и 2 алгоритма, которые вы можете сделать самостоятельно.

1) Core one: Это буквально только одна строка кода. Я бы предложил использовать это - простое и очень эффективное, по сравнению с двумя ниже.

Arrays.sort(myArray); 

2) Выбор Сортировка: Найти наименьшее значение в массиве, переместить его в первое положение, найти следующий низкий, перейти на 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; 
} 
+0

Говоря о сортировке, Timsort O (N) best O (NlogN) наихудший используется для сортировки в Java SE 7 (первое решение) –

 Смежные вопросы

  • Нет связанных вопросов^_^