Я создал программу, которая сравнивает различные методы поиска, которые ищут случайное значение int 0-999 из отсортированного массива, который равен 0-999. Я создал бинарный поиск, который работает отлично, и после этого я решил попробовать создать поиск, который вместо разделения значений пополам разбивает их на 1/3 и 2/3 в зависимости от. Таким образом, если бы у меня было {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} и я искал 10, я бы пошел сверху до {6 ,7,8,9,10,11,12,13,14,15} до {10,11,12,13,14,15} до {10,11}, затем просто {10} и вернуть индекс этого ценность.
В настоящее время у меня есть:
int loopTotal3 = 0;
for(int y = 0; y < 1000; y++){
System.out.println("Reference1");
int first = 0;
int last = array0Through999.length - 1;
int third = (array0Through999[0] + array0Through999[999]) / 3;
int findThis3 = rand.nextInt(1000);
int loop3 = 0;
while(first <= last){
System.out.println("Reference2");
loop3++;
if (array0Through999[third] < findThis3){
System.out.println("Reference3");
first = third + 1;
}
else if(array0Through999[third] == findThis3){
System.out.println("Reference4");
break;
}
else{
System.out.println("Reference5");
last = third-1;
}
third = (first + last) / 3;
}
loopTotal3 = loopTotal3 + loop3;
}
int loopAverage3 = loopTotal3 / 1000;
System.out.println("The average number of times for a Binary Search is: " + loopAverage3 + "\n");
В настоящее время код застревает при выполнении первого оператора if, и я не уверен, почему.
Любые идеи по поводу моей проблемы или если эта логика близка к правильной?
int third = (array0Through999[0] + array0Through999[999]) / 3;
переосмыслить это - person Naman   schedule 17.11.2016