2014-09-05 4 views
0

Как я могу отсортировать этот список (по убыванию)? Он добавляет числа, но сортирует их в порядке возрастания, но мне бы хотелось, чтобы он нисходил (без использования каких-либо внешних библиотек или чего-то еще). Я попытался понять это, но ничего не придумал.Сортировка списка (по убыванию)

private void addNewElement() 
{ 
//getting the input 
System.out.print("Please type the number to be added to the list: "); 

Integer newValue = null; 
while(newValue == null) 
{ 
    try 
    { 
     newValue = Integer.parseInt(userInput.nextLine()); 
    } 
    catch (final Exception e) 
    { 
     System.out.println("Wrong value. Please insert new value."); 
    } 
} 

//creating new element based on the input 
MyListElement newElement = new MyListElement(newValue); 

//if not first 
if (firstElement != null) 
{ 
    placeElementInList(newElement); 
} 
else 
{ 
    firstElement = newElement; //if first 
} 
} 

//if not first 
private void placeElementInList(final MyListElement newElement) 
{ 
//if smaller than first 
if (newElement.value < firstElement.value) 
{ 
    newElement.nextElement = firstElement; //new points to first 
    firstElement = newElement;    //and becomes first 
} 
else 
{ 
    MyListElement previousElement = firstElement; //have to remember previous element 
    MyListElement elementInList = firstElement.nextElement; //currently checked. 
    while (elementInList != null) 
    { 
     if (newElement.value < elementInList.value) //if new element is smaller that currently checked 
     { 
      break; //break - put it in current position. 
     } 
     previousElement = elementInList; //if not, move forward, substitute variables 
     elementInList = elementInList.nextElement; 
    } 
    previousElement.nextElement = newElement; //set the new element at the proper position 
    newElement.nextElement = elementInList; // 
} 

}

+3

Используйте 'Collections.sort' и' Comparator'. – Mena

+1

Descending - это то же самое, что и восхождение, кроме того, что вы переворачиваете знак. Вы должны иметь возможность изменить один для другого, изменив одну строку кода. –

+0

'if (newElement.value> elementInList.value)' ... – R2B2

ответ

0

Чтобы это сортировать по убыванию, просто переверните все операторы сравнения из < в >, например,

if (newElement.value > firstElement.value) 
+0

Хорошо, но что, если я должен сортировать его по убыванию, когда список уже завершен? Я имею в виду, в то время, когда я собираюсь его распечатать. Следующий: MyListElement elementInList = firstElement; while (elementInList! = Null) { 10 System.out.print (elementInList.value + ","); elementInList = elementInList.nextElement; } – user3816423

+0

Вы можете перевернуть список, заменив первый и последний элементы, второй и второй на последний элементы и т. Д., Пока не дойдете до середины списка. – rgettman

+0

Должен ли я использовать цикл while? Извините, я действительно смущен – user3816423

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