【C语言-23】如何在整型有序数组中查找想要的数字,(内含二分查找法),

  

二分查找法:

  1. 二分查找也称折半查找,它是一种效率较高的查找方法。
  2. 但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.
  3. 代码如下:
  4.  
  5. #include<stdio.h>
    
    #include<stdlib.h>
    
    int main() {
    	int arr[] = { 1,2,3,4,5,6,7,8,9,0 };//创建整形数组;
    
    	int left = 0;
    
    	int right = sizeof(arr) / sizeof(0) - 1;//数组元素个数=总字节/单字节-1;
    	int key = 6;
    
    	int mid = 0;
    	while (left <= right) {//待查元素存在区间;
    
    		mid = (left + right) / 2;
    
    		if (arr[mid] > key) {
    
    			right = mid - 1;
    		}
    		else if (arr[mid] < key) {
    
    			left = mid + 1;
    
    		}
    		else
    			break;
    
    
    	}
    	if (left <= right)
    
    		printf("找到了,下标是%d\n", mid);
    
    	else
    		printf("找不到\n");
    
    	system("pause");
    
    }

    运行结果:

顺序查找法:

  1. 将数组中的数字从第一个元素开始,依次与需要朝赵的关键字比较。
  2. 若某个元素匹配关键字,则 查找成功,返回下标;
  3. ;若查找到最后一个元素还能找到关键字,则查找失败,返回-1;
  4. 
    #define _CRT_SECURE_NO_WARNINGS
    
    #include<stdio.h>
    
    #include<stdlib.h>
    
    int main() {
    	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
    
    	int key ,i;
    	printf("请输入你想查找的数:");
    
    	scanf("%d", &key);
    
    	for (i = 0; i < 10; i++) {
    		if (key == arr[i]) {
    
    			printf("找到了,下标是%d", i);
    
    			system("pause");
    			return 0;
    
    		}
    	}if (i = 10) {
    
    		printf("%d", -1);
    	
    	}
    		system("pause");
    
    	
    }

    运行结果:

猜你喜欢

转载自blog.csdn.net/weixin_44749767/article/details/88877141