long BinSearch(StepBaby array, long searchedValue, long left, long right) { while (left < right) { long middle = (left + right) / 2; mHardPractice++; if (searchedValue == array.value[middle]) { return(array.index[middle]); } else if (searchedValue < array.value[middle]) { right = middle - 1; } else { left = middle + 1; } } return(-1); }
void Sorting(StepBaby arr, long first, long last) { long p = arr.value[(last - first) / 2 + first]; long temp; long i = first, j = last; while (i <= j) { while (arr.value[i] < p && i <= last) { ++i; } while (arr.value[j] > p && j >= first) { --j; } mHardPractice++; if (i <= j) { temp = arr.index[i]; arr.index[i] = arr.index[j]; arr.index[j] = temp; mHardPractice += 6; temp = arr.value[i]; arr.value[i] = arr.value[j]; arr.value[j] = temp; ++i; --j; } } mHardPractice++; if (j > first) { Sorting(arr, first, j); } mHardPractice++; if (i < last) { Sorting(arr, i, last); } }