IEnumerator TernarySearch() { var arr = ArrayManager.Array(); int key = ArrayManager.SearchingNumber; int l = 0; int r = arr.Length; while (r >= l) { int mid1 = l + (r - l) / 3; int mid2 = r - (r - l) / 3; if (arr[mid1] == key) { ArrayManager.ChangeColorOfNumber(mid1, "yellow"); break; } else if (arr[mid2] == key) { ArrayManager.ChangeColorOfNumber(mid2, "yellow"); break; } if (key < arr[mid1]) { r = mid1 - 1; } else if (key > arr[mid2]) { l = mid2 + 1; } else { l = mid1 + 1; r = mid2 - 1; } if (!Master.Instant) { ArrayManager.ChangeColorOfTwoNumbers(mid1, mid2, "red"); yield return(new WaitForSeconds(Master.StepLength)); } } }