2011-09-09 144 views
0

我讀算法導論書和僞代碼是插入排序 - 僞問題

INSERTION-SORT(A) 
1 for j ← 2 to length[A] 
2 do key ← A[j] 
3  ▹ Insert A[j] into the sorted sequence A[1 j - 1]. 
4  i ← j - 1 
5  while i > 0 and A[i] > key 
6  do A[i + 1] ← A[i] 
7   i ← i - 1 
8  A[i + 1] ← key 

雖然在維基的僞代碼是

for j ←1 to length(A)-1 
    key ← A[ j ] 
    > A[ j ] is added in the sorted sequence A[0, .. j-1] 
    i ← j - 1 
    while i >= 0 and A [ i ] > key 
     A[ i +1 ] ← A[ i ] 
     i ← i -1 
    A [i +1] ← key 

爲什麼一個開始,2和循環起來到長度,另一個以1開始,並循環到A-1的長度?

回答

7

它看起來像第一個僞代碼塊使用基於1的索引,而第二個使用基於0的索引。

+0

+1的確如此。維基百科上的書呆子會使用基於0的索引=) – jadarnel27

+1

我希望人們會堅持一種方式來做到這一點。它有時會使閱讀困難。 – Daniel

0

這基本上是一樣的,只是一個人的索引開始於0(從零開始),而另一個的開始於1(one-based)。例如。在C#中的數組是基於零的,而VB是基於一個的。