int low = 0; strTarget = txtTarget->Text; int high = Convert::ToInt32(strName->Length); int mid = Convert::ToInt32((low+high)/2); bool found = false; int i = 0; strLog ="BINARY SEARCH LOG " + Environment::NewLine; MessageBox::Show("Mid: " + mid.ToString() + " Low: " + low.ToString() + " High: " + high.ToString() + " strName: " + strName[mid]->ToString()); while (!(found) && (low <= high)) { strLog += "Checking location " + mid.ToString() + " (" + strName[mid] + ") against " + strTarget + " (Low: " + low.ToString() + " & High: " + high.ToString() + ")" + Environment::NewLine; if (String::Compare(strTarget,strName[mid])==0) found = true; else { if(String::Compare(strTarget,strName[mid])< 0) { high = mid-1; mid = (low + high)/2; } else if(String::Compare(strTarget,strName[mid])> 0) { low = mid+1; mid = (low + high)/2; } } i++; } if (found) strLog += "FOUND!\r\n"; else strLog += "NOT FOUND!\r\n"; txtLog->Text += strLog + i.ToString() + " comparisons were made."; }