1

我正在编写一个程序,它需要一个数组并使用 shell 排序。问题是我试图展示从开始到结束之间的每一步。因此,当排序发生时,我试图显示每一次传递以及是否应该交换值。这就是我正在做的事情,但我意识到这是令人费解的方式,无论如何都不会起作用。但它让我了解了我的思考过程。我没有包括 shell 排序代码或任何其他部分,因为我不需要这些帮助......

    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]);

很抱歉,这可能到处都是,我可以在脑海中看到需要做什么,我只是没有达到实际实施它的地步。我会尽我所能得到的帮助!

4

0 回答 0