插入排序:为什么我们将 j 减一?

问题描述 投票:0回答:1

为什么我们将 j 减一 (j--)?它实际上有什么作用?

void sort(int arr[])
{
    int n = arr.length;
    for (int i = 1; i < n; ++i) {
        int key = arr[i];
        int j = i - 1;

        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}
java insertion-sort
1个回答
0
投票

让我们考虑一个 12,45,51,23,19,8 的数组。 子数组 12,45,51 已经排序。 23 应放在 12 旁边。 要将 23 放在 12 旁边,我们需要移动 45,51 的位置

// In Case of i=3 
key=23
j=2

最后进入 while 循环第一时间

array=12,45,51,51,19,8
key=23
j=1

第二次进入最后的 while 循环内部

array=12,45,45,51,19,8
key=23
j=0

并结束 while 循环

arr[j + 1] = key; //this statement gets executed

之后数组=12,23,45,51,19,8。 因此 j-- 语句有助于更改数组中元素的位置

© www.soinside.com 2019 - 2024. All rights reserved.