针对 有序数组,可以使用更高效的二分查找。
以升序数组为例, 二分查找的思路是先取中间位置的元素, 然后使用待查找元素与数组中间元素进行比较:
- 如果相等,即找到了返回该元素在数组中的下标
- 如果小于,以类似方式到数组左半侧查找
- 如果大于,以类似方式到数组右半侧查找
重点是有序数组。
快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。
Java实现:
public static void main(String[] args) {
int[] arr = {12, 34, 23, 45};
System.out.println(binarySearch(arr,34));
}
public static int binarySearch(int[] arr,int num) {
int left = 0;
int right = arr.length - 1;
while(left <= right) {
int mid = (left + right) / 2;
if(num < arr[mid]) {
right = mid - 1;
}else if (num > arr[left]) {
left = mid + 1;
}else {
return mid;
}
}
return -1;
}
C语言实现:
int main()
{
int i, k = 0;
scanf("%d", &k);
int arr[] = { 23,3,45,12 };
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
if (arr[i] == k)
{
printf("你要找的数是:%d", arr[i]);
}
}
return 0;
}
本文介绍了二分查找算法在有序数组中的应用,详细阐述了其查找思路,即通过比较待查找元素与数组中间元素,根据比较结果在相应区间继续查找。文章提供了Java和C语言的实现代码,强调了算法对有序数组的依赖,并提到了快速排序法中Arrays.sort()在Java中的使用。
4061





