递归与分治思想:治思想 && 折半查找法(迭代 && 递归)
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 ...
随机推荐
- 2021-7-11 Vue的计算属性和侦听器
计算属性是为了让页面显示更加简洁,基于data数据进行处理的方法,以下为实例 <!DOCTYPE html> <html> <head> <title> ...
- MySQL_Explain详解
当我们在工作中面临SQL优化的问题时,熟练掌握适合的工具,就能使事半功倍,提高工作效率.其中,EXPLAIN工具就是一种常用且高效的SQL优化工具. EXPLAIN关键字的使用方法是,在select语 ...
- WEB前端资源网站推荐
https://www.bootcss.com/ https://www.bootcdn.cn/ http://www.jeasyui.net/plugins/756.html
- 配置DHCP
配置DHCP 条件:关闭防火墙 和selinux 1,安装dhcp服务 [root@localhost ~]#yum install dhcp -y#安装dhcp服务 2,查看配置文件 [root@l ...
- PHP秒杀面试题
什么是秒杀系统:秒杀系统是一个处理大量并发用户请求的系统,通常用于限时促销或特定活动中,用户可以在特定时间内以抢购的方式购买商品或服务. 秒杀系统可能面临的挑战是什么?秒杀系统可能面临以下挑战: 高并 ...
- Sealos 国内集群正式上线,可一键运行 LLama2 中文版大模型!
2023 年 7 月 19 日,MetaAI 宣布开源旗下的 LLama2 大模型,Meta 首席科学家.图灵奖得主 Yann LeCun 在推特上表示 Meta 此举可能将改变大模型行业的竞争格局. ...
- 使用redis pipeline提升性能
前言 本篇来介绍一下redis pipeline,主要是由于最近一次在帮开发同学review代码的时候,发现对redis有个循环操作可以优化.场景大概是这样的,根据某个uid要从redis查询一批数据 ...
- KIOPTRIX: LEVEL 1.1 (#2) 常规命令注入+内核提权
0×02 Vulnhub靶机渗透总结之 KIOPTRIX: LEVEL 1.1 (#2) 系列专栏:Vulnhub靶机渗透系列 欢迎大佬:点赞️收藏关注 首发时间: 2023年8月20日 如有错误 还 ...
- Programming abstractions in C阅读笔记:p123-p126
<Programming Abstractions In C>学习第50天,p123-p126,总结如下: 一.技术总结 1.notaion 这也是一个在计算机相关书籍中出现的词,但有时却 ...
- [ABC150E] Change a Little Bit
2023-03-10 题目 题目传送门 翻译 翻译 难度&重要性(1~10):7 题目来源 AtCoder 题目算法 数学,贪心 解题思路 显然 \(C_i\) 越小的位越早被修改越好.所以我 ...