递归与分治思想:治思想 && 折半查找法(迭代 && 递归)
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 ...
随机推荐
- linux 配置dns及代理
简介 对于新装的环境,可能无法访问外网,此时需要设置代理或DNS实现访问. 类似wget.yum.pip这类命令都需要通过网络进行下载. 配置dns服务 在/etc/resolv.conf中添加如下两 ...
- .NET Core多线程 (1) Thread与Task
去年换工作时系统复习了一下.NET Core多线程相关专题,学习了一线码农老哥的<.NET 5多线程编程实战>课程,我将复习的知识进行了总结形成本专题.同时也特别推荐有兴趣的读者去学习一线 ...
- 文盘Rust -- Mutex解决并发写文件乱序问题
在实际开发过程中,我们可能会遇到并发写文件的场景,如果处理不当很可能出现文件内容乱序问题.下面我们通过一个示例程序描述这一过程并给出解决该问题的方法. use std::{ fs::{self, Fi ...
- Programming abstractions in C阅读笔记p111-p113: boilerplate
<Programming Abstractions In C>学习第47天,p111-p113,总结如下: 一.技术总结 1.boilerplate /* * File: random.h ...
- 服务端不回应客户端的syn握手,连接建立失败原因排查
背景 测试环境有一个后台服务,部署在内网服务器A上(无外网地址),给app提供接口.app访问这个后台服务时,ip地址是公网地址,那这个请求是如何到达我们的内网服务器A呢,这块我咨询了网络同事,我画了 ...
- SRC赏金猎人—笔记二
以下是如何将速率限制漏洞的影响从低增加到高甚至严重 过程 1.我访问了该网站,然后开始在网站的主文件中手动查找main.js 2.我发现有一个 Web 服务托管在 http:// redacted.c ...
- Web开发框架 WebBuilder 9 发布
WebBuilder 是一款强大,全面和高效的Web开发框架 .基于浏览器的集成开发环境,智能化的设计,能轻松完成常规桌面应用和面向手机等的移动应用开发.高效.稳定和可扩展的特点,适合复杂企业级应用的 ...
- MIT6.s081/6.828 lectrue07:Page faults 以及 Lab5 心得
本篇博客主要是复习 MIT6.s081/6.828 lectrue07:Page faults 以及记录 Lab5 :COW fork 的心得 值得一提的是,2020 年之前的版本第 5 个 lab ...
- Android13深入了解 Android 小窗口模式和窗口类型
Android13深入了解 Android 小窗口模式和窗口类型 小窗模式,作为一种在移动设备上的多任务处理方式,为用户带来了便捷和高效的体验,尤其在一些特定场景下,其价值愈发凸显.以下是为什么需要小 ...
- 揭秘ChatGPT,如何打造自己的自定义指令
一.ChatGPT-0720更新 又在深夜,正要打开ChatGPT官网测试下pdf对话功能,发现ChatGPT又有更新.本次更新总结有2点: 1.对于Plus用户,GPT-4的使用限额从25条/3h提 ...