2013-10-26 2 views
0

Я хочу сделать массив из чего-то вроде этого:Упорядочивание значения массивов в целочисленном массиве

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} 

Для этого:

{6, 5, 4, 3, 2, 1, 0, 13, 12, 11, 10, 9, 8, 7, 20, 19, 18, 17, 16, 15, 14} 

Но я невежествен, как. Я думаю, что этот метод может служить хорошей альтернативой коду, который я планирую сделать. (Я не буду использовать Dr. Java так что никаких импортируемых файлов BTW)

для целого массива называется integer[]:

(for j = 0; j < 3; j++) { 
      (for k = 0; k = 6; k++) { 
       int newj = j+1; 
       int array = integer[k*newj]; 
       integer [k*newj] = integer[6 - k*newj -1]; 
       integer[6 - k*newj - 1] = array; 
      } 
    } 

Но это не работает.

Любые советы? Это не часть задания, но это часть экзамена, которая будет проходить через неделю, и я хочу быть в этом уверен.

+0

Попробуйте изменить 'k = 6' на' k <= 6'. Кроме того, ваш синтаксис 'for' неверен, он должен быть' for (j = 0; j <3; j ++) ', то есть' for' за пределами parens. –

+0

Плюс, вместо того, чтобы иметь 'newj', вы можете просто« j »перебирать от 1 до 3, если это то, что вы хотите:' for (int j = 1; j <= 3; j ++) '. –

+0

Я получаю ArrayOutofBounds = -1, когда я это делаю. Похоже, что ошибка находится во второй-последней строке. – user2922148

ответ

1

В вашем массиве имеется 21 элемент. Из описания, которое вы упомянули, вы хотите разделить его на 3 части. Каждая часть имеет 7 элементов и отменяет их.

Для каждой части мы можем выполнить операции по обмену данными.

  1. Обмен 1-го элемента с 7-м элементом.
  2. Насадка 2-го элемента с 6-й элем.
  3. Обмен 3-го элемента с 5-м элементом. ... ...

Примечание: Конечным условие 7/2 для обмена данными. Это средний индекс из 7 элементов.

Вот еще одна вещь, чтобы определить, что индекс начало и индексный для каждой отдельной части.

Следующий код работает для вашего требования. Надеюсь, это может помочь вам.

for (int j = 0; j <3; j++) { 
     for (int k = 0; k <7/2; k++) { 
      int newj = j+1; 
      int array = integer[7*newj-k-1]; 
      integer[7*newj-k-1]= integer [7*j+k]; 
      integer [7*j+k] = array; 
     } 
    } 
Смежные вопросы