Java 跳转搜索算法
我正在做跳转搜索算法,但它告诉我,元素不在数组中,而它在数组中 这是代码Java 跳转搜索算法,java,algorithm,Java,Algorithm,我正在做跳转搜索算法,但它告诉我,元素不在数组中,而它在数组中 这是代码 import java.math.*; public class jamp { public static int min(int a,int b) { return a<b?a:b; } public static void main(String[]args) { int a[]=new int[]{3,7,9,12,14,15,16,17
import java.math.*;
public class jamp {
public static int min(int a,int b) {
return a<b?a:b;
}
public static void main(String[]args) {
int a[]=new int[]{3,7,9,12,14,15,16,17,18};
int l=14;
System.out.println(jumpsearch(a,a.length,l));
}
public static int jumpsearch(int a[],int n, int l ) {
int t=0;
int b=(int)Math.sqrt(n);
while (a[min(b,n)-1]<t){
t=b;
b=b+(int)Math.sqrt(n);
if ( t>=n) return -1 ;
}
while (a[t]<l){
t=t+1;
if ( t==min(b,n))
return -1 ;
if ( a[t]==l) {
return t;
}
}
return -1;
}
}
import java.math.*;
公共类jamp{
公共静态最小整数(整数a、整数b){
返回一个变化
while (a[min(b,n)-1]<t){
while(a[min(b,n)-1]这是我的跳转搜索示例(替代方法):-
希望这有帮助
public class JumpSearch {
public static void main(String[] args) {
int[] arr= {0,1,2,3,4,5,5,9,12,14,15,15};
System.out.println("Element found at: "+search(arr,15));
}
public static int search (int[] arr,int key){
int length= arr.length;
int start=0;
int jump=(int) Math.sqrt(length);
for(int i=0;i<length;i+=jump){
if(arr[i]==key){
return i;
}
else if(arr[i]>key){
start=arr[i-jump];
break;
}else{
start=i+1;
}
}
for(int i=start;i<arr.length;i++){
if(arr[i]==key){
return i;
}
}
return -1;
}
}
公共类跳转搜索{
公共静态void main(字符串[]args){
int[]arr={0,1,2,3,4,5,5,9,12,14,15};
System.out.println(“在以下位置找到的元素:”+search(arr,15));
}
公共静态整数搜索(int[]arr,int键){
int-length=arr.length;
int start=0;
int jump=(int)Math.sqrt(length);
for(int i=0;ikey){
start=arr[i-jump];
打破
}否则{
开始=i+1;
}
}
对于(int i=start;i函数jumpSearch($arr,$length,$searched_值){
$step=sqrt($length);
对于($i=0;$arr[$i]一条友好的建议:不要给变量起一个字母的名字,这会使你产生的代码很难渗透,即使没有太多。养成正确命名变量的习惯将确保任何未来的代码伙伴都是快乐的露营者。使用调试器,你可以在最著名的Java IDE中找到,例如就像Eclipse或NetBeans一样,一行一行地遍历代码,并跟踪发生的情况。这如何回答关于Java中的代码和标记Java的隐式问题?
public class JumpSearch {
public static void main(String[] args) {
int[] arr= {0,1,2,3,4,5,5,9,12,14,15,15};
System.out.println("Element found at: "+search(arr,15));
}
public static int search (int[] arr,int key){
int length= arr.length;
int start=0;
int jump=(int) Math.sqrt(length);
for(int i=0;i<length;i+=jump){
if(arr[i]==key){
return i;
}
else if(arr[i]>key){
start=arr[i-jump];
break;
}else{
start=i+1;
}
}
for(int i=start;i<arr.length;i++){
if(arr[i]==key){
return i;
}
}
return -1;
}
}
function jumpSearch($arr,$length,$searched_value){
$step=sqrt($length);
for($i=0;$arr[$i]<=$searched_value;$i=$i+$step){
if($arr[$i]==$searched_value){
return $i;
}else{
$last_up=$i;
}
}
$s=$last_up+1;
$l=$s+$step;
for($i=0;$i<=$l;$i++){
if($arr[$i]==$searched_value){
return $i;
}
}
}
$arr=array(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610);
$length=count($arr);
$searched_value=34;
$result=jumpSearch($arr,$length,$searched_value);
if($result==-1){
}else{
echo "Search Found at ".$result;
}