簡體   English   中英

使用插入排序將數組的特定索引向左移動

[英]Moving specific index of array to the left using Insertion Sort

我正在嘗試執行插入排序算法,其中我有一個 pushLeft 方法,該方法要求用戶提供一個數組和 int 索引並將索引向左推送,直到對其進行排序。 但是,我很難編碼它。 現在我有:

static <E extends Comparable<E>> void pushLeft(double[] testArray, int index) {
    for (int i = 1; i < index; i++) {
        while (inOrder(testArray[i - 1], testArray[index]) == false) {
            testArray[i] = testArray[i - 1];
                }
        testArray[i] = testArray[index];
    }
}

現在,如果我有一個 double[] testArray = {5, 7, 8, 9, 6} 並且我調用 pushLeft(testArray, 4),它會返回 5.0, 6.0, 6.0, 6.0, 6.0。 我知道這是因為它駐留在 for 循環中,但我不確定我還應該怎么做。

謝謝你。

當您覆蓋數組中的值時,計算機不會記住舊值。 這里的問題是您將值寫入左側,然后使用相同的值更新左側的每個值。 我已經在下面展示了當前正在發生的事情。

數組是 0 索引的,所以當我說索引 3 時,我指的是第 4 個元素。

第 1 步(原始數組):5.0、7.0、8.0、9.0、6.0

步驟 2(用索引 4 處的值覆蓋索引 3 處的值):5.0、7.0、6.0、6.0

第 3 步(用索引 4 處的值覆蓋索引 2 處的值):5.0、6.0、6.0、6.0

為防止這種情況發生,請考慮如何保留數組中的值,以免意外復制相同的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM