当前位置: 首页 > news >正文

政府网站建设相关评论文章/网络广告策划书

政府网站建设相关评论文章,网络广告策划书,安徽企业建站系统平台,教育类网站如何做文章目录 1.算法思想2.代码实现(1)循环实现(2)递归实现 3.题目练习 1.算法思想 二分查找(折半查找):有序数组(升序或降序,可以不连续),每次缩小一半的区间。 时间复杂度:O(log n) 空间复杂度:循环实现是 O(1)&#xf…

文章目录

    • 1.算法思想
    • 2.代码实现
      • (1)循环实现
      • (2)递归实现
    • 3.题目练习

1.算法思想

二分查找(折半查找):有序数组(升序或降序,可以不连续),每次缩小一半的区间。
时间复杂度:O(log n)
空间复杂度:循环实现是 O(1),递归实现是 O(log n)



2.代码实现

C语言求数组长度:

int n = sizeof(A)/sizeof(A[0]);

(1)循环实现

1.C语言实现

//binarySearch.c : 二分查找(折半查找):要求数组必须是有序的(升序或降序,可以不连续)
#include <stdio.h>int binarySearch(int A[], int n, int key)
{int left = 0, right = n-1;while(left <= right){int mid = left + (right-left)/2;if(key < A[mid]){        //目标key在左半区间right = mid-1;}else if(key > A[mid]){  //目标key在右半区间left = mid+1;}else{                   //key == midreturn mid;}}return -1;
}int main()
{int A[] = {01,20,27,59,71,3702,10247};  int n = sizeof(A)/sizeof(A[0]);int pos = binarySearch(A,n,10247);printf("pos = %d\n", pos);return 0;
}

2.C++实现

#include <iostream>
#include <vector>
using std::cout;
using std::vector;int binarySearch(const vector<int>& arr, int target)
{int left = 0, right = arr.size()-1;while(left <= right){//mid的声明要放在循环里面int mid = left + (right-left)/2;  //避免整数溢出if(target < arr[mid]){       //目标在左半区间right = mid -1;}else if(target > arr[mid]){ //目标在右半区间left = mid + 1;}else{return mid;}}return -1;
}int main()
{//二分查找要求是有序数组vector<int> arr = {1,3,5,7,9,11,13,15,17,19,21,23};int target = 21;int pos = binarySearch(arr, target);if(pos == -1){cout << "未找到目标值" << target << "\n";}else{cout << "目标值" << target << "的下标为" << pos << "\n";}return 0;
}

(2)递归实现

//二分查找(折半查找):要求数组必须是有序的(升序或降序,可以不连续)#include <stdio.h>//1.循环实现
int binarySearchIterative(int A[], int n, int key)
{int left = 0, right = n-1;while(left <= right){int mid = left + (right-left)/2;if(key < A[mid]){        //目标key在左半区间right = mid-1;}else if(key > A[mid]){  //目标key在右半区间left = mid+1;}else{                   //key == midreturn mid;}}return -1;
}//2.递归实现
int binarySearchRecursive(int A[], int left, int right, int key)
{//递归出口if(left > right)    return -1;//递归公式int mid = left + (right-left)/2;if(key < A[mid]){        //目标在左半区间return binarySearchRecursive(A, left, mid-1, key);}else if(key > A[mid]){  //目标值在右半区间return binarySearchRecursive(A, mid+1, right, key);}else{                   //目标值 == A[mid]return mid;}
}int main()
{int A[] = {1,20,27,59,71,88,100,3702,10247};  int n = sizeof(A)/sizeof(A[0]);while(1){int key;printf("请输入要查找的数字: ");scanf("%d",&key);int posI = binarySearchIterative(A,n,key);int posR = binarySearchRecursive(A,0,n-1,key);printf("posI = %d\n", posI);printf("posR = %d\n", posR);}return 0;
}



3.题目练习

1.力扣704:二分查找
https://leetcode.cn/problems/binary-search/

参考答案:C语言实现

//二分查找的循环实现
int search(int* nums, int numsSize, int target) {int left = 0, right = numsSize-1;while(left <= right){int mid = left + (right-left)/2;if(target < nums[mid]){        //目标在左半区间right = mid-1;}else if(target > nums[mid]){  //目标在右半区间left = mid+1;}else{                         //target == nums[mid]return mid;}}return -1;
}
http://www.jmfq.cn/news/5314375.html

相关文章:

  • 深圳做手机网站建设/windows优化大师怎么下载
  • 建设网站需要体现的流程有哪些内容/品牌策划
  • 成都网页设计的网站建设/谷歌搜索引擎怎么才能用
  • 网站建设推广平台有哪些方面/郑州纯手工seo
  • 学网站建设培训机构/自己如何制作一个网站
  • 微网站怎么建设/怎么做竞价托管
  • 上海 网站建设 排名/网络销售推广是做什么的具体
  • 品牌网站建设报价表/佛山网站开发公司
  • 长沙柒零叁网站建设/铁力seo
  • 网站建设公司郑州/百度seo运营工作内容
  • 深圳市住房建设局网站/seo建设招商
  • 网站建设方案书 模版/军事新闻头条
  • 加强局门户网站建设/seo优化技术
  • 温州市住房和城乡建设网站/win优化大师有用吗
  • 铜仁市网站建设情况/百度站长工具怎么用
  • 新农村建设的网站/软文推广收费
  • 济阳网站建设哪家好/搜索引擎优化好做吗
  • 西安网站建设-中国互联/企业培训考试系统
  • 已建设英文网站的政府部门/厦门seo排名公司
  • 阿里巴巴国际网站建设/中国十大互联网公司排名
  • 网站建设是干什么的/百度网站的优化方案
  • 学习网站建设的书籍/李飞seo
  • 网站建设的实验的结论/网站seo快速排名
  • 运城市住房与城乡建设厅网站/苏州seo网络推广
  • 网站建设 三合一/山东网站seo推广优化价格
  • 企业为什么要建设网站/班级优化大师功能介绍
  • 海淀网站建设/免费的网站推广在线推广
  • 企业网站建设的调研/百度竞价优化排名
  • 延庆长沙网站建设/今日热搜榜前十名
  • 河北黄骅市网站建设/设计网站官网