バイナリサーチでは最初の添え字がfirstになり、最後の添え字、また要素数がlastになるという事を聞きました。
しかし、このコードではlastはlength-1になっています。
挿入するたびにlengthを増やしているから、もちろんlengthは要素数となり、
last=lengthにしなくてはいけないのではと思いました。
ご指摘のほど、よろしくお願いします。
コード void Sortedlist::InsertItem(ItemType item) { bool moreToSearch; int location = 0; moreToSearch = (location < length); while (moreToSearch) { switch (item.ComparedTo(info[location])) { case LESS: moreToSearch = false; break; case GREATER: location++; moreToSearch = (location < length); break; case EQUAL: break; } } for (int index = length; index > location; index--) info[index] = info[index - 1]; info[location] = item; length++; }
コード void Sortedlist::RetrieveItem(ItemType &item, bool &found) { int midPoint; int first = 0; int last = length - 1; bool moreToSearch = first <= last; found = false; while (moreToSearch && !found) { midPoint = (first + last) / 2; switch (item.ComparedTo(info[midPoint])) { case LESS: last = midPoint - 1; moreToSearch = first <= last; break; case GREATER: first = midPoint + 1; moreToSearch = first <= last; break; case EQUAL: found = true; item = info[midPoint]; break; } } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。