замена значений в массиве для преобразования порядка от наименьшего к наибольшему

#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, но я чувствую, что на данный момент я просто хожу по кругу