关键字static和二分查找

关键字static:

在C语言中,static是用来修饰变量和函数的:

1. 修饰局部变量-称为静态局部变量

 

static修饰局部变量改变了变量的生命周期

让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。 

2. 修饰全局变量-称为静态全局变量

一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。

3. 修饰函数-称为静态函数

  一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

二分查找:

比如我买了一双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?

答案:你每次猜中间数。

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int k = 7;
	int left = 0;
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] < k)
			left = mid + 1;
		else if (arr[mid] > k)
			right = mid - 1;
		else
		{
			printf("找到了,下标是:%d", mid);
			break;
		}
	}
	if (left > right)
		printf("找不到");
	return 0;
}

二分查找可以极大地提高查找效率, 但只适用于有序数组。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答这个问题。以下是一个用 Java 实现的二分查找算法: ```java public static int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] == target) { return mid; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; } ``` 这个算法接收一个已排序的整数数组 `arr` 和一个目标整数 `target`,返回目标整数在数组中的下标,如果目标整数不在数组中,则返回 -1。该算法使用了二分查找的思想,在每一轮循环中通过比较目标整数和数组中间位置的数,缩小查找范围,最终找到目标整数或者确定目标整数不在数组中。 ### 回答2: 二分查找(Binary Search)是一种在有序数组中查找特定元素的算法。它通过将数组分成两部分,并比较所需的元素与数组中间元素的值来确定该元素是否存在于数组中。 以下是使用Java编写的一个简单的二分查找例子: ```java public class BinarySearch { public static int binarySearch(int[] arr, int key) { int left = 0; int right = arr.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == key) { return mid; } if (arr[mid] < key) { left = mid + 1; } else { right = mid - 1; } } return -1; } public static void main(String[] args) { int[] arr = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}; int key = 12; int result = binarySearch(arr, key); if (result == -1) { System.out.println("元素不在数组中"); } else { System.out.println("元素在数组中的索引位置为: " + result); } } } ``` 上述代码中,`binarySearch`方法接收一个有序整数数组`arr`和要查找的关键字`key`作为参数,返回关键字在数组中的索引,如果不存在,则返回-1。 使用循环和逐步缩小搜索范围的策略,该算法在每一次迭代中将数组分成两部分,并通过比较关键字和数组中间元素的值来决定进一步搜索的方向。如果中间元素等于关键字,则返回该元素的索引;如果中间元素小于关键字,则在右半部分继续搜索;如果中间元素大于关键字,则在左半部分继续搜索。最终,如果未找到关键字,则返回-1。 在上述示例代码中,我们搜索有序数组`arr`中的关键字12,并输结果为“元素在数组中的索引位置为: 5”。这意味着关键字12在数组中的索引为5。 ### 回答3: 二分查找是一种在有序数组中查找目标值的算法。下面是使用Java语言编写一个简单的二分查找算法的示例代码: ```java public class BinarySearch { public static int binarySearch(int[] arr, int target) { int left = 0; // 左边界 int right = arr.length - 1; // 右边界 while (left <= right) { int mid = left + (right - left) / 2; // 计算中间索引 if (arr[mid] == target) { return mid; // 如果中间元素等于目标值,则返回该索引 } if (arr[mid] < target) { left = mid + 1; // 如果中间元素小于目标值,则将左边界移动到中间索引后一位 } else { right = mid - 1; // 如果中间元素大于目标值,则将右边界移动到中间索引前一位 } } return -1; // 如果未找到目标值,则返回-1 } public static void main(String[] args) { int[] arr = {2, 4, 6, 8, 10, 12}; int target = 8; int result = binarySearch(arr, target); if (result == -1) { System.out.println("目标值未找到"); } else { System.out.println("目标值在索引 " + result + " 处找到"); } } } ``` 以上代码演示了如何使用二分查找在有序数组中查找目标值。在main()方法中,定义了一个有序数组arr和目标值target。然后调用binarySearch()方法执行二分查找,找到目标值的索引并返回。最后根据返回值输结果。如果返回-1表示目标值未找到,否则输目标值在数组中的索引位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值