Существует два отсортированных массива непрерывных чисел, объединенные в один массив. Оба массива имели различные числа.Найти индекс начальной точки сортированного циклического целочисленного массива
ex :
{1, 2, 3, 4, 5, 6, 7, 8, 9} and
{10, 11, 12, 13, 14}
int[] resultArr = {10, 11, 12, 13, 14, 1, 2, 3, 4, 5, 6, 7, 8, 9};
^
Алгоритм определения индекса начальной точки. Если мы будем рассматривать его как циклический массив, он будет отсортирован в порядке, итерации с начальной точки.
В приведенном выше примере начальный индекс будет «4»
Я написал ниже пример программы, чтобы решить эту проблему, но не рад временной сложности.
Может ли кто-нибудь сказать мне сложность во времени приведенного ниже кода и обеспечить лучшее решение этой проблемы.
public class FindStartingPoint {
public static Integer no = null;
private static void findStartingPoint(int[] arr, int low, int mid, int high) {
if (no != null)
return;
else if (high - low <= 1)
return;
else if (arr[mid] > arr[mid + 1]) {
no = mid + 1;
return;
}
findStartingPoint(arr, low, (low + mid)/2, mid);
findStartingPoint(arr, mid, (mid + high)/2, high);
}
public static void main(String[] args) {
int[] arr = {12, 13, 14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
findStartingPoint(arr, 0, arr.length/2, arr.length - 1);
System.out.println(no);
}
}
Thanks in Advance. :-)
так что ждите, вы пытаетесь найти самое низкое число в массиве? – basic
@JordanSeanor, Нет. Я пытаюсь найти индекс массива самого низкого значения no (который будет отправной точкой). –
Если два массива '{1,2,3}' и '{4,5, 6} ', нет решения, поэтому просто сортировать и иметь отдельные элементы недостаточно. – biziclop