#java #arrays #shellsort
#java #массивы #shellsort
Вопрос:
Я пишу программу, которая принимает массив и использует сортировку оболочки. Загвоздка в том, что я пытаюсь показать каждый шаг между началом и завершением. Так как сортировка происходит, я пытаюсь показать каждый проход и следует ли менять значения местами. Это то, что я делал, но я понимаю, что это СПОСОБ запутанный и не будет работать в любом случае. Но это дает представление о моем мыслительном процессе. Я не включил код сортировки оболочки или любые другие части, потому что мне не нужна помощь с ними…
int array[] = {29, 38, 85, 37, 49, 69, 33, 55, 88, 71, 52, 41};
//sorting pass 1
int pos;
pos = gap;
System.out.println("Insert Value: " array[pos]);
if (array[pos]>array[0]){
System.out.println(" COMPARE: [" pos "]" array[pos] " < [0] [" array[0] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" pos "]" array[pos] " < [0] [" array[0] "] ? Yes - Move "
array[pos] " to index [" pos "]");
System.out.println("INSERT " array[pos] " at index [0]");
}
System.out.println("Insert Value: " array[pos 1]);
if (array[pos 1]>array[1]){
System.out.println(" COMPARE: [" (pos 1) "]" array[pos 1] " < [1] [" array[1] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 1) "]" array[pos 1] " < [1] [" array[1] "] ? Yes - Move "
array[1] " to index [" (pos 1) "]");
System.out.println("INSERT " array[pos 1] " at index [1]");
}
System.out.println("Insert Value: " array[pos 2]);
if (array[pos 2]>array[2]){
System.out.println(" COMPARE: [" (pos 2) "]" array[pos 2] " < [2] [" array[2] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 2) "]" array[pos 2] " < [2] [" array[2] "] ? Yes - Move "
array[2] " to index [" (pos 2) "]");
System.out.println("INSERT " array[pos 2] " at index [2]");
}
System.out.println("Insert Value: " array[pos 3]);
if (array[pos 3]>array[3]){
System.out.println(" COMPARE: [" (pos 3) "]" array[pos 3] " < [3] [" array[3] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 3) "]" array[pos 3] " < [3] [" array[3] "] ? Yes - Move "
array[3] " to index [" (pos 3) "]");
System.out.println("INSERT " array[pos 3] " at index [3]");
}
System.out.println("Insert Value: " array[pos 4]);
if (array[pos 4]>array[4]){
System.out.println(" COMPARE: [" (pos 4) "]" array[pos 4] " < [4] [" array[4] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 4) "]" array[pos 4] " < [4] [" array[4] "] ? Yes - Move "
array[4] " to index [" (pos 4) "]");
System.out.println("INSERT " array[pos 4] " at index [4]");
}
System.out.println("Insert Value: " array[pos 5]);
if (array[pos 5]>array[5]){
System.out.println(" COMPARE: [" (pos 5) "]" array[pos 5] " < [5] [" array[5] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 5) "]" array[pos 5] " < [5] [" array[5] "] ? Yes - Move "
array[5] " to index [" (pos 5) "]");
System.out.println("INSERT " array[pos 5] " at index [5]");
}
System.out.println("Insert Value: " array[pos 6]);
if (array[pos 6]>array[6]){
System.out.println(" COMPARE: [" (pos 6) "]" array[pos 6] " < [6] [" array[6] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 6) "]" array[pos 6] " < [6] [" array[6] "] ? Yes - Move "
array[6] " to index [" (pos 6) "]");
System.out.println("INSERT " array[pos 6] " at index [6]");
}
System.out.println("Insert Value: " array[pos 7]);
if (array[pos 7]>array[7]){
System.out.println(" COMPARE: [" (pos 7) "]" array[pos 7] " < [7] [" array[7] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 7) "]" array[pos 5] " < [7] [" array[7] "] ? Yes - Move "
array[7] " to index [" (pos 7) "]");
System.out.println("INSERT " array[pos 7] " at index [7]");
}
System.out.println("Insert Value: " array[pos 8]);
if (array[pos 8]>array[8]){
System.out.println(" COMPARE: [" (pos 8) "]" array[pos 8] " < [8] [" array[8] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 8) "]" array[pos 8] " < [8] [" array[8] "] ? Yes - Move "
array[8] " to index [" (pos 8) "]");
System.out.println("INSERT " array[pos 8] " at index [8]");
}
System.out.println("Insert Value: " array[pos 9]);
if (array[pos 9]>array[9]){
System.out.println(" COMPARE: [" (pos 9) "]" array[pos 9] " < [9] [" array[9] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 9) "]" array[pos 9] " < [9] [" array[9] "] ? Yes - Move "
array[9] " to index [" (pos 9) "]");
System.out.println("INSERT " array[pos 5] " at index [9]");
}
System.out.println("Insert Value: " array[pos 5]);
if (array[pos 10]>array[10]){
System.out.println(" COMPARE: [" (pos 10) "]" array[pos 10] " < [10] [" array[10] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 10) "]" array[pos 10] " < [10] [" array[10] "] ? Yes - Move "
array[10] " to index [" (pos 10) "]");
System.out.println("INSERT " array[pos 10] " at index [10]");
}
System.out.println("Insert Value: " array[pos 11]);
if (array[pos 11]>array[11]){
System.out.println(" COMPARE: [" (pos 11) "]" array[pos 11] " < [11] [" array[11] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 11) "]" array[pos 11] " < [11] [" array[11] "] ? Yes - Move "
array[10] " to index [" (pos 11) "]");
System.out.println("INSERT " array[pos 11] " at index [11]");
}
System.out.println("Insert Value: " array[pos 5]);
if (array[pos 12]>array[12]){
System.out.println(" COMPARE: [" (pos 12) "]" array[pos 12] " < [12] [" array[12] "] ? No");
System.out.println(" Already inserted in correct place");
}else{
System.out.println(" COMPARE: [" (pos 12) "]" array[pos 12] " < [12] [" array[12] "] ? Yes - Move "
array[12] " to index [" (pos 12) "]");
System.out.println("INSERT " array[pos 12] " at index [12]");
Итак, мне нужна помощь в написании этого; Мне нужен способ реализовать все те операторы if, которые можно использовать для каждого прохода, а затем после каждого прохода реализовать новый массив… Я думаю, мне нужно написать цикл, который будет увеличивать значения по мере прохождения по массиву. Я также собирался реализовать это для реализации замененных значений. У меня реализовано 5, потому что для этого конкретного прохода именно там происходит обмен.
int temp = array[
array[5] = array[pos 5];
array[pos 5] = temp;
System.out.println(array[5]);
Извините, это, вероятно, повсюду, я вижу в своей голове, что нужно сделать, я просто не дохожу до того, чтобы фактически реализовать это. Я приму любую помощь, которую смогу получить!
Комментарии:
1. Я думаю, вы хотите исследовать термин для цикла .
2. @GhostCat да, я знаю, как работает цикл for, и это на самом деле именно то, о чем я думал, я должен это сделать. Но я просто застрял на начальной записи цикла for и на том, как реализовать приращение массива… Я писал и удалял идеи, которые у меня есть, с помощью цикла for, но я чувствую, что на данный момент я просто хожу по кругу