Java线性查找、二叉树查找

mac2026-01-06  7

数组的查找

1.线性查找 按照数组的顺序从第一个开始遍历数组,依次与想要查找的内容比对,直到找到为止,或找到数组结束,没有找到。

public staitc int LineSearch(int[] array,int key){ for(int i=0;i<array.length;i++){ if(key=array[i]){ return i; } return -1; } }

2.二叉树查询 数组中第一个元素为low,最后一个元素为high,(0+array.length-1)/2为mid的位置,当所查找的数大于min,low就挪去mid+1的位置,mid也重新更新。

public static int binarySearch(int[] array,int key){ int low=0; int high=array.length-1; while(high>=low){ int mid=(low+high)/2; if(key>array[mid]){ low=mid+1; } else if(key==array[mid]){ return mid; } else{ high=mid-1; } } return -low-1; }

注意注意!!!

线性查找只适合元素较少的数组且无一定顺序的数组,若元素较多,线性查找效率就比较低了。

二叉查找虽然效率高,但只适合列表必须以递增顺序排列,有无重复不影响,递减的排列顺序也可改用呢!😏

二叉查找中, 如果key不在列表中,返回-low-1正是key需要作为第几个数插入的位置。

明日内容:数组的排序; 今日心情烦躁,不宜学习,手撕了几个简单的代码没什么写的, 就总结了前几天学到的东西,见谅见谅。😔 明天一定好好学习,嗯,没错就这样!

晚安!

最新回复(0)