這是在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