如何将以下伪代码转换为java代码:
for k:=0 to (j - i - 1)
{
a[j-k] :=a[j-k-1]
}
这是来自离散数学书的插入排序代码的一部分,如果我应该在k++
语句之后将k--
或to
或其他内容作为java for循环的一部分,我会感到困惑
伪代码:
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];
}
(<=可能需要是<,取决于“是否”意味着在这种情况下包含性)
插入排序背后的想法是继续比较当前元素与之前的元素,如果它更小;交换。在数组按降序排序的情况下,插入排序具有最差的时间复杂度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]则交换。