我有了這個僞代碼:我解釋這個僞碼錯了嗎?
COMPARE-EXCHANGE(A,i,j)
if A[i] > A[j]
exchange A[i] with A[j]
INSERTION-SORT(A)
for j = 2 to A.length
for i = j-1 downto 1
COMPARE-EXCHANGE(A,i,i+1)
我將它解釋爲:
void insertSort()
{
int tmp;
for(int j = 2 ; j < MAX ; ++j)
{
for(int i = j - 1 ; i > 0 ; --i)
{
if(unsortedArr[i] > unsortedArr[i + 1])
{
tmp = unsortedArr[i];
unsortedArr[i] = unsortedArr[i + 1];
unsortedArr[i + 1] = tmp;
}
}
}
}
然而,將跳過unsortedArr[0]
。 這意味着它不會工作。
更改第二for
到:
for(int i = j - 1 ; i >= 0 ; --i)
會使其運行如預期。 僞代碼中有錯誤還是我第一次嘗試解釋錯誤?
它是可能的僞碼使用1索引的數組,而在C++陣列是0索引的。 – Gassa