//在一个指定的升序数组中,找到指定的数【普通方法/二分查找】

普通查找

#define _CRT_SECURE_NO_WARNINGS
#include 


int main() {


	int arr[] = {1,2,3,4,5,6,7,8,9 };
	int i = 0;
	scanf("%d", &i);//查找的数字定义为i;
	int sz = sizeof(arr) / sizeof(arr[0]);//数组的元素个数
	int find = 0;//假设找不到
	for (int j = 0; j < sz; j++) {//从0开始遍历到数组个数(数组全部长度)(数组全部个数)
		if (i == arr[j])
		{
			printf("找到了,该数字的下标是%d\n", j);
			find = 1;
			break;
		}
	}
	if (find == 0){
		printf("没有找到。");

	}
		return 0;
}

二分查找


//二分查找
int main() {
	int arr[] = { 1,2,3,4,5,6,7,8,9.10 };
	int sz = sizeof(arr) / sizeof(arr[0]);//数组的元素个数
	int i = 0;
	scanf("%d", &i);//查找的数字为i;//假设i为7
	int left = 0;					//left为下标0,元素1
	int right = sz - 1;				//right为最后一个元素(下标数组长度-1)//养成一开始定义数组长度的习惯


	int find = 0;//假设找不到
	while (left <= right) {
		int mid = (left + right) / 2;   //mid为0+9/2 下标为4,元素5
		if (arr[mid] < i) {				//下标4,元素5<7
			left = mid + 1;				//此时left为下标4+1=5.下标5,元素6
		}
		else if (arr[mid] > i) {
			right = mid - 1;
		}
		else
		{
			printf("找到了,该数字的下标是%d\n", mid);
			find = 1;
			break;
		}
	}
	if (find == 0) {
		printf("没有找到。");

		
	}
	return 0;

}

你可能感兴趣的:(C语言学习,算法,数据结构,c语言,学习,笔记)