2011-09-09 3 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, действительно. Nerds в Википедии будет использовать индексирование на основе 0 =) – jadarnel27

+1

Я хочу, чтобы люди просто придерживались одного способа сделать это. Иногда это делает примеры чтения. – Daniel

0

Это в основном то же самое, только этот индекс начинается с 0 (на основе нуля), а у другого - 1 (один на основе). Например. в массивах C# основаны на нуле, а VB - на основе одного.