喵呜:二分查找法在有序数组中的应用
Posted 爱吃榴莲的喵星人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了喵呜:二分查找法在有序数组中的应用相关的知识,希望对你有一定的参考价值。
喵博主用二分查找的两种写法在一个有序数组中查找数字
写法一:
#include<stdio.h> int BinarySearch(int* arr, int sz, int k) int left = 0; int right = sz - 1; while (left <= right) int mid = (left + right) / 2; if (arr[mid] > k) right = mid - 1; else if (arr[mid] < k) left = mid + 1; else return mid;//找到返回 if (left > right) return -1;//没有找到 int main() int arr[10] = 1,2,3,4,5,6,7,8,9,10 ; int sz = sizeof(arr) / sizeof(arr[0]);//数组长度 int k = 0;//找的数字 scanf("%d", &k); int num = BinarySearch(arr, sz, k); if(num == -1) printf("找不到\\n"); else printf("找到了,下标是:%d\\n", num); return 0;
写法二:
#include<stdio.h> int BinarySearch(int* a, int sz, int k) int begin = 0; int end = sz - 1; while (begin <= end) int mid = begin + ((end - begin) >> 1); if (a[mid] < k) begin = mid + 1; else if (a[mid] > k) end = mid - 1; else return mid; return -1; int main() int arr[10] = 1,2,3,4,5,6,7,8,9,10 ; int sz = sizeof(arr) / sizeof(arr[0]); int k = 0; scanf("%d", &k); int num = BinarySearch(arr, sz, k); if(num == -1) printf("找不到\\n"); else printf("找到了,下标是:%d\\n", num); return 0;
以上为这篇文章所有内容,如有错误多和喵博主讨论,相互学习相互进步。
以上是关于喵呜:二分查找法在有序数组中的应用的主要内容,如果未能解决你的问题,请参考以下文章