伪代码for循环到java for循环

问题描述 投票:-1回答:2

如何将以下伪代码转换为java代码:

for k:=0 to (j - i - 1)
{

    a[j-k] :=a[j-k-1]

}

这是来自离散数学书的插入排序代码的一部分,如果我应该在k++语句之后将k--to或其他内容作为java for循环的一部分,我会感到困惑

java for-loop insertion-sort
2个回答
1
投票

伪代码:

FOR k := 0 to (j - i - 1)
   a[j - k] := a[j - k - 1]
END FOR

将转换为Java代码:

for (int k = 0; k <= (j - i - 1); k++){
   a[j - k] = a[j - k - 1];
}

(<=可能需要是<,取决于“是否”意味着在这种情况下包含性)


0
投票

插入排序背后的想法是继续比较当前元素与之前的元素,如果它更小;交换。在数组按降序排序的情况下,插入排序具有最差的时间复杂度O(n ^ 2),并且具有O(n)以获得最佳时间复杂度。

以下代码描述了插入排序。

      int key,temp,i,j; 
        for (int i = 1; i < arr.length; i++) {
             key = arr[i];
             j = l - 1;
            while (j >= 0 && key < arr[j]) {
                 temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                j--;
            }
        }

您必须将i = 1和j设置为之前的比较,如果arr [i] <arr [j]则交换。

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