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

php网站做语言包找网络公司做推广费用

php网站做语言包,找网络公司做推广费用,樟树网站建设,wordpress js插件开发教程目录 前提条件 核心思想 方式1——递归实现(分治算法) 方式2——迭代实现 前提条件 数据结构:必须采用顺序存储结构,例如数组,这样才能通过下标随机访问元素。元素有序性:数组中的元素必须是有序的&…

目录

前提条件

核心思想

方式1——递归实现(分治算法)

方式2——迭代实现


  • 前提条件

    • 数据结构必须采用顺序存储结构,例如数组,这样才能通过下标随机访问元素。
    • 元素有序性数组中的元素必须是有序的,即按照升序或降序排列。如果数组无序,二分查找将无法正确工作。
  • 核心思想

    • 利用数组的有序性,通过不断将查找区间缩小为原来的一半,来快速定位目标元素。每次比较都能排除掉一半的查找范围,从而大大提高查找效率。
  • 方式1——递归实现(分治算法)

#include <stdio.h>// 二分查找函数,返回目标值在数组中的索引,不存在则返回 -1
int binarySearch(int arr[], int left, int right, int target) {if (left > right) {return -1;  // 未找到目标值}int mid = left + (right - left) / 2;  // 计算中间索引,防止溢出if (arr[mid] == target) {return mid;  // 找到目标值,返回索引} else if (arr[mid] > target) {return binarySearch(arr, left, mid - 1, target);  // 在左半部分继续查找} else {return binarySearch(arr, mid + 1, right, target);  // 在右半部分继续查找}
}int main() {int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};int len = sizeof(arr) / sizeof(arr[0]);int target = 9;int result = binarySearch(arr, 0, len - 1, target);if (result != -1) {printf("目标值 %d 在数组中的索引是 %d\n", target, result);} else {printf("目标值 %d 不在数组中\n", target);}return 0;
}
  • 方式2——迭代实现

#include<stdio.h>// 二分查找法 —— 在一个有序数组里查找特定元素的位置
int binarySearch(int arr[], int low, int high, int value) {while (low <= high) {int mid = (low + high) / 2;if (arr[mid] < value){low = mid + 1;}else if (arr[mid] > value) {high = mid - 1;}else{return mid;}}return -1;//代表在该数组中没有找到该元素
}int main() {//测试二分查找法——查找11这个值int arr2[] = { 3,4,6,11,19,22,46 };int len2 = sizeof(arr2) / sizeof(arr2[0]);int index = binarySearch(arr2, 0, len2 - 1, 11);if (index != -1){printf("11在数组中的第%d个位置!\n", index + 1);//4}else {printf("11不存在数组arr2内!\n");}return 0;
}

两种实现方式的区别

实现方式

  • 递归(分治算法):分治算法实现的二分查找通过递归调用自身来不断缩小查找范围。每次递归时,根据中间元素与目标值的比较结果,决定是在左半部分还是右半部分继续递归查找。
  • 迭代:迭代方式使用 while 循环来不断更新查找范围的左右边界,直到找到目标值或者确定目标值不存在。

代码结构

  • 递归:递归实现的代码结构更加简洁和直观,因为它直接体现了分治的思想。递归函数会不断调用自身,直到满足终止条件。
  • 迭代:迭代实现使用循环结构,代码相对复杂一些,需要手动管理循环变量和边界条件。

终止条件

  • 递归:递归的终止条件通常是查找范围为空(left > right)或者找到目标值。当满足终止条件时,递归函数会返回结果。
  • 迭代:迭代的终止条件是查找范围的左边界大于等于右边界(low >= high),此时循环结束,根据情况返回结果。

内存使用

  • 递归:递归实现会在调用栈上创建多个函数调用帧,每个调用帧都会占用一定的内存空间。如果数组规模较大,递归深度可能会很深,导致栈溢出的风险。
  • 迭代:迭代实现只使用了常数级的额外空间,不会像递归那样占用大量的栈空间,因此在内存使用上更加高效。

性能

  • 时间复杂度:两种实现方式的时间复杂度都是 (O(log n)),因为每次查找都会将查找范围缩小一半。
  • 空间复杂度:递归实现的空间复杂度是 (O(log n)),主要是递归调用栈的空间开销;迭代实现的空间复杂度是 (O(1)),只使用了常数级的额外空间。

http://www.dtcms.com/wzjs/340721.html

相关文章:

  • 怎样临沂网站建设百度交易平台
  • 网站创意模板最厉害的搜索引擎
  • 北京公司核名工商官网seo主要做什么工作内容
  • wordpress修改登录地址seo排名外包
  • 网站建设 wix竞价托管资讯
  • 深圳瑞捷成立新公司邯郸网站优化公司
  • 什么网站做啤酒软文兼职
  • 做一普通网站需要多少钱谷歌查询关键词的工具叫什么
  • 江门北京网站建设建网站的软件有哪些
  • 手工艺品网站建设目的网站推广优化方法
  • 素马网站建设费用差距网页设计制作网站教程
  • 桂林遇龙河seo课程培训入门
  • 用html做班级网站2345网址导航浏览器下载
  • 网页制作与网站建设完全学习手册光盘百度163黄页关键词挖掘
  • 深圳网站建设响应式网站深圳百度竞价推广
  • 濮阳做网站公司seo的主要工作内容
  • 快速优化网站建设新闻头条免费下载安装
  • 医疗网站建设策划网络营销成功案例介绍
  • 建设个人网站需要备案吗网络营销环境
  • 四川广汉市规划和建设局网站免费推广
  • 一个成功的网站必须具备哪几个要素网站营销网站营销推广
  • 曲沃网站建设网络营销的成功案例
  • 东莞阳光网站官网搜索引擎入口网址
  • linux做网站的好处国外免费舆情网站有哪些软件
  • 公司建的站加油违法吗郑州网络营销公司哪个好
  • 在哪个网站上做预收款报告seo外包公司
  • 有了域名怎么做网站正在直播足球比赛
  • 个人宽带弄网站可以吗线上营销策略有哪些
  • 贵阳市网站做的最好的公司网页制作模板
  • 建设网站有什么风险灰色推广引流联系方式