这是在C#(或Java,如果你decapitalize “长度”):
void myFunction(int[] arr)
{
for(int i = 0; i < arr.Length; i++)
{
if(arr[i] > i)
{
int j = i;
while(j < arr.Length && arr[j] >= j)
j = j + 1;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i = 0;
}
}
}
同时使用,而不是为:
void myFunction(int[] arr)
{
int i = 0;
while(i < arr.Length)
{
if(arr[i] > i)
{
int j = i;
while(j < arr.Length && arr[j] >= j)
j = j + 1;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i = 0;
}
i++;
}
}
注意的压痕结构伪代码:
function myFunction(arr[])
for i = 0 to length(arr)
if (arr[i] > i) then
...
This意味着for语句下面的所有内容都在循环中,并且if之下的所有内容(包括将i设置为0)都将位于条件块内。鉴于这个事实,如果if语句被输入,我必须从1开始。如果代码如下所示会发生什么?
void myFunction(int[] arr)
{
int i = 0;
while(i < arr.Length)
{
if(arr[i] > i)
{
int j = i;
while(j < arr.Length && arr[j] >= j)
j = j + 1;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
i = 0;
}
}
}
在arr[i] <= i
的情况下,循环不会终止。
除非另有明确规定,否则应该始终假定迭代循环的最后一个操作是索引的移位。这是一个for循环必须如何行事的方式,以及一段时间执行应该如何(按照惯例)。
代码本身看起来是一个bubble sort实现的尝试,但基于与索引的比较而不是其他元素进行排序。我不确定它意味着什么。
你为什么这么问? – desperateCoder
任何C语言风格语言的代码看起来都非常相似。为什么不问问这个伪代码呢? –
因为对我来说有两个选项: 它可能是: 的for(int i = 0; I <长度(ARR);我++) 或者它可以是: 而(I'长度(ARR)) 如果(arr [i]> i) i = 0; else i ++; – orsi