递归与分治思想:治思想 && 折半查找法(迭代 && 递归)
1 //分治思想:将大问题拆成小问题逐一解决
2 //折半查找法:不断缩小一半查找的范围,知道达到目的,效率较高。 详情见:https://fishc.com.cn/thread-27964-1-1.html
3
4 //折半查找法(迭代)
5 #include<stdio.h>
6
7 int search(int str[], int n, int key);
8
9 int main(void)
10 {
11 int str[11] = {1,1,2,3,5,8,13,21,34,55,89};
12 int n,adr;
13
14 printf("请输入你需要查找数据的关键字:");
15 scanf("%d",&n);
16 printf("\n");
17
18 adr = search(str,11,n);
19 if(adr != -1)
20 {
21 printf("查找成功,关键字%d所在的位置是:%d\n",n,adr);
22 }
23 else
24 {
25 printf("查找失败!\n");
26 }
27
28 return 0;
29 }
30
31 int search(int str[], int n, int key)
32 {
33 int low,high,mid;
34
35 low = 0;
36 high = n-1;
37 mid = (low+high)/2;
38
39 while(low <= high)
40 {
41 if(key > str[mid])
42 {
43 low = mid+1;
44 mid = (low+high)/2;
45 }
46 if(key < str[mid])
47 {
48 high = mid-1;
49 mid = (low+high)/2;
50 }
51 if(key == str[mid])
52 {
53 return mid;
54 }
55 }
56
57 return -1;
58 }
59
60 //折半查找法(递归算法)
61 #include<stdio.h>
62
63 int search(int str[], int low, int high, int key);
64
65 int main(void)
66 {
67 int str[11] = {1,1,2,3,5,8,13,21,34,55,89};
68 int n,addr;
69
70 printf("请输入想要查找的关键字:");
71 scanf("%d",&n);
72
73 addr = search(str,0,10,n); //0是low 10是high
74 if(addr == -1)
75 printf("查找失败!\n");
76 else
77 printf("可喜可贺,可口可乐,你查找的关键字 %d 在位置 %d ",n,addr);
78
79 return 0;
80 }
81
82 int search(int str[], int low, int high, int key)
83 {
84 int mid;
85 if(low <= high)
86 {
87 mid = (low+high)/2;
88 if(str[mid] == key)
89 return mid;
90 else
91 {
92 if(key > str[mid])
93 search(str,mid+1,high,key);
94 else
95 search(str,low,mid-1,key);
96 }
97 }
98 else
99 return -1;
100 }
递归与分治思想:治思想 && 折半查找法(迭代 && 递归)的更多相关文章
- C语言折半查找法练习题冒泡排序
C语言折半查找法练习题 折半查找法: 折半查找法是效率较高的一种查找方法.假设有已经按照从小到大的顺序排列好的五个整数num[0]~num[4],要查找的数是key,其基本思想是: 设查找数据的范围下 ...
- C语言数组之冒泡排序+折半查找法(二分查找)
冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...
- 数据机构-折半查找法(二分查找法)-Python实现
Python实现二分查找法(基于顺序表) class List: elem=[] #存储顺序表元素 last=-1 #设置初始为-1 SeqList = List() #创建一个顺序表 print(& ...
- c# 折半查找法实现代码
] { , , , , , , , , , , , , , , , , , , , }; , i; string j, k; , ); ) { k = String.Format("未找到{ ...
- 二分法(折半查找法)小demo
使用此算法,必须有一个前提,那就是数组必须是有序的. package com.ly.tcwireless.international.test; import org.junit.Test; publ ...
- 先对数组排序,在进行折半查找(C++)
第一步:输入15个整数 第二步:对这15个数进行排序 第三部:输入一个数,在后在排好序的数中进行折半查找,判断该数的位置 实现代码如下: 方法一: 选择排序法+循环折半查找法 #include< ...
- C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。
作业的具体要求如下: 编写一个完整的程序,实现如下功能.(1) 输入10个无序的整数.(2) 用选择排序法将以上接收的10个无序整数按从大到小的顺序排序.(3) 要求任意输入一个整数 ...
- 查找->静态查找表->折半查找(有序表)
文字描述 以有序表表示静态查找表时,可用折半查找算法查找指定元素. 折半查找过程是以处于区间中间位置记录的关键字和给定值比较,若相等,则查找成功,若不等,则缩小范围,直至新的区间中间位置记录的关键字等 ...
- InnoDB索引概述,二分查找法,平衡二叉树
索引是应用程序设计和开发的一个重要方面.如果索引太多,应用的性能可能会受到影响:如果索引太少,对查询性能又会产生影响.要找到一个合适的平衡点,这对应用的性能至关重要. 如果知道数据的使用,从一开始就应 ...
- 选择、冒泡排序,二分查找法以及一些for循环的灵活运用
import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...
随机推荐
- SpringBoot 启动流程分析(寻找扩展点)
1.SpringBoot maven 依赖版本 <?xml version="1.0" encoding="UTF-8"?> <project ...
- Angular:修改启动端口号
目标 修改预先设定的4200端口号,改为4100 解决方案 在启动命令中添加 --port 4100.参数 --open,会在启动时自动打开浏览器. ng serve --open --port 41 ...
- 日志监控平台搭建(Loki+promtail+grafana)
搭建Loki+promtail+grafana日志监控平台,可以直接在grafana的UI界面查看系统应用日志,使日志查看起来更方便.快捷. Loki:主服务器,负责存储日志和处理查询. Prom ...
- 免费拥有自己的 Github 资源加速器
TurboHub 是一个免费的 Github 资源加速下载站点,可以帮助你快速下载 Github 上的资源.其核心逻辑是通过 Azure Static Web Apps 服务和 Azure Funct ...
- 【升职加薪秘籍】我在服务监控方面的实践(6)-业务维度的mysql监控
大家好,我是蓝胖子,关于性能分析的视频和文章我也大大小小出了有一二十篇了,算是已经有了一个系列,之前的代码已经上传到github.com/HobbyBear/performance-analyze,接 ...
- 基于 LLM 的知识图谱另类实践
本文整理自社区用户陈卓见在「夜谈 LLM」主题分享上的演讲,主要包括以下内容: 利用大模型构建知识图谱 利用大模型操作结构化数据 利用大模型使用工具 利用大模型构建知识图谱 上图是之前,我基于大语言模 ...
- win11安装ubuntu(by wsl2)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本机情况 省吃俭用入手了ThinkPad T14,打算 ...
- Htttpclien循环自动生成图片,同时发送参数和文件,模拟http的post请求
package org.jeecg.modules.bussiness.PostTests; import com.sun.tools.internal.xjc.reader.xmlschema.bi ...
- 3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT
本文分享自华为云社区<DAYU200+OpenHarmony 3.1.1对接华为云IOT[华为云IoT+鸿蒙]>,作者:DS小龙哥. 一.前言 OpenHarmony 3.1.1 是一个开 ...
- TOP GP 把已经编译的per反编回对应版本的4fd(画面档)
由于GP5.1,5.2,5.3的genero对应版本画面档开发互不兼容,下面提供各版本之间互转的操作方法: xshell切换到要反编译的per档目录,执行以下命令,就会在同目录下生成对应4fd档资料 ...