打印最后插入阵列位置的位置

时间:2016-12-01 00:51:14

标签: java arrays printing

我想打印一个数组,它指出“placementPosition”的位置,或者数组中参数的位置。这个位置是最新数字被插入到数组的排序部分的位置。对于“currPosition”是相同的,但是如果我得到了放置的帮助,我可以想出来。 “i”是placementPosition,“c”是“currPosition”。看起来应该是这样的:

enter image description here

我真的不知道该怎么做,这是我到目前为止的代码:

public static void displaySort(int[] items, int currPosition, int placedPosition) {
    System.out.println("Iteration #"+currPosition);
    String[][] arr = new String[currPosition][currPosition];
    String i="i";
    String c="c";
    String ic="ic";
    System.out.println(arr[placedPosition][placedPosition]=i);
    System.out.println(arr[currPosition][currPosition]=c);
    System.out.println(Arrays.toString(items));
}

排序:

public static void insertionSort(int[] items) {
    int currentPosition;  // the number of items sorted so far
    int currentItem;   // the value being inserted
    int backwardMovingIndex; // used to find where the current value gets inserted.

    //displaySort(items, 0, 0); // use this call to display the list before the first iteration (iteration 0)

    for (currentPosition = 1; currentPosition < items.length; currentPosition++) // Start with 1 (not 0)
    {
        currentItem = items[currentPosition];
        for (backwardMovingIndex = currentPosition - 1; (backwardMovingIndex >= 0) && (items[backwardMovingIndex] > currentItem); backwardMovingIndex--) // Larger values are moving up
        {
            items[backwardMovingIndex + 1] = items[backwardMovingIndex];
        }
        items[backwardMovingIndex + 1] = currentItem;    // Put the current value in its proper location
        displaySort(items, currentPosition, backwardMovingIndex + 1); // use this call to display the list for all other iterations
    }
}

1 个答案:

答案 0 :(得分:0)

对于初学者,您需要确保使用固定位数打印出数字,因此请尝试使用

等代码而不是 for (int item : items) { System.out.printf("%5d", item); } System.out.println();
    int i = 1;
    for (int x = 0; x<items.length; x++) {
        if (x == i) {
            System.out.printf("%5s", "i");
        }
        else {
            System.out.printf("%5s", "");
        }
    }
    System.out.println();

要在列中放置“i”,请使用

之类的代码
n

对于控制循环所有分支中列宽的格式说明符,键使用相同的值(在本例中为5)。如果这些是任意整数,您可能需要使用更大的值,例如10.如果您想获得幻想,可以通过查看最大absoulte值的基数10 logr来确定制作列的宽度在数组中。然后,您可以将整数转换为精确String.format("%"+n+"d", item)个字符的字符串 (x == c)

要完成您的问题,请在if / else结构中添加更多分支以进行检查  (i == c) && (x == i)this.tasks