2015-10-23 5 views
2

Нужна небольшая помощь. Работа над моей домашней работой, и мне приходится сортировать список, используя ArrayDeque. Я могу проверить первый и последний элемент. У меня есть список, напримерСохранить элемент в другом списке

int[] list = {6, 8, 7}; 

Первый элемент - 6 - войдет в пустой массив, никаких проблем с этим. Второй элемент - 8 - пойдет позади 6, так что у нас будет [6,8], но затем приходит 7. Так как я не могу поставить его перед 6, и я не могу положить его на 8. Так что я должен хранить 7 в какой-то другой список, который я могу позже вернуть. Как мне это сделать? Любой намек приветствуется. Спасибо. (И извините, если это то, что было задано раньше, но не могло найти решение)

+0

* список сортировки, используя ArrayDeque *. Зачем кому-либо это делать? Почему бы не использовать 'Arrays.sort (list)'? –

+0

как вы можете прочитать, это домашнее задание – AverageJoe9000

+1

Я понимаю это, но для меня это не имеет никакого смысла. Звучит так: «Мне нужно пойти в следующий город, используя банан». –

ответ

0

Позвольте мне вначале пояснить ваши ограничения.Вы можете только:

  • получить значение первого элемента
  • удалить первый элемент
  • PREPEND перед первым элементом
  • получить значение последнего элемента
  • удалить последний элемент
  • прилагается после последнего элемента

Алгоритм добавления стоимости х годов из массива в структуру описано выше, с использованием стека:

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

Если вы не можете использовать стек, но вам разрешено использовать рекурсию, то вы можете использовать стек вызовов в том же самом конце

+0

да, я могу использовать стек. Попробуем это решение! спасибо в данный момент :) – AverageJoe9000

0

Что-то, что вы могли бы сделать, это сохранить значение int с индексом x в локальную переменную, а затем пройти через массив, видящий если есть значение, меньшее, чем текущее значение, и если это становится новым более низким значением. Когда он заканчивается через массив, вы можете ввести его в новый массив.

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