2024.3.19

1.哈希表

代码:

#include"hash.h"//申请结点
node_p create_node(int data)
{node_p new = (node_p)malloc(sizeof(node));new->data = data;return new;
}
//存入哈希表
void insert(node_p H[],int key)
{//数据要存入哈希表中指定下标的位置int i = key%MAX;//申请结点node_p new = create_node(key);//头插new->next = H[i];H[i] = new;
}
//输出哈希表
void show(node_p *H)
{if(H==NULL){printf("入参为空,请检查\n");return;}for(int i=0;i<MAX;i++){//输出指针数组所指向的链表node_p p = H[i];while(p!=NULL){printf("%d->",p->data);p=p->next;}printf("NULL\n");}
}
//查找元素
void search(node_p H[],int key)
{if (H==NULL){printf("入参为空,请检查\n");return;}int i = key%MAX;node_p p = H[i];if(p->data==key){printf("该元素下标为:%d\n",i);return;}else{p = p->next;printf("该元素下标为:%d\n",i);return;}if(p->data!=key){printf("没有该元素\n");return;}
}

结果:

2.快速排序和折半(二分)查找

快速排序

代码:

#include<myhead.h>//一次快排的代码,需要返回基准最后的位置
int one_sort(int *arr,int low,int high)
{//定义一个基准元素,每次的基准元素是序列中low下标的元素int base = arr[low];while(high>low){while(high>low&&arr[high]>base){high--;}arr[low] = arr[high];while(high>low&&arr[low]<base){low++;}arr[high] = arr[low];}arr[low] = base;return low;
}
//整体快排
void sort(int *arr,int low,int high)
{if(high>low){int ret = one_sort(arr,low,high);sort(arr,low,ret-1);sort(arr,ret+1,high);}
}int main(int argc, const char *argv[])
{int arr[]={98,72,65,43,12,66,25,39};int len = sizeof(arr)/sizeof(arr[0]);//one_sort(arr,0,len-1);    一次快排sort(arr,0,len-1);//输出for(int i=0;i<len;i++){printf("%d\n",arr[i]);}return 0;
}

结果:

折半查找

代码:

#include<myhead.h>//折半查找的函数
int half_search(int *arr,int low,int high,int key)
{while(high>=low)//查找算法,一个数也要查{int mid = (low+high)/2;if(arr[mid]==key){return mid;}else if(arr[mid]>key){high = mid-1;}else if(arr[mid]<key){low = mid+1;}}printf("没有该元素\n");return -1;
}int main(int argc, const char *argv[])
{int arr[]={12,25,36,47,58,89,92};//需要数组有序,逻辑有序即可int len = sizeof(arr)/sizeof(arr[0]);int n;printf("请输入想要查找到的元素:");scanf("%d",&n);printf("查找到的数据下标为:%d\n",half_search(arr,0,len-1,n));return 0;
}

结果:

3.思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Mysql数据库基础03】分组函数(聚合函数)、分组查询

分组函数(聚合函数&#xff09;、分组查询 1 分组函数1.1 简单的使用1.2 是否忽略null值1.3 和关键字搭配使用1.4 count函数的详细介绍1.5 练习 2 分组查询Group by2.1 简单的分组查询2.2 练习 3 格式投票:yum: 1 分组函数 1.1 简单的使用 COUNT(expression)&#xff1a;计算符…

《C++新经典对象模型》之第6章 对象构造语义学

《C新经典对象模型》之第6章 对象构造语义 6.1 继承体系下的对象构造6.1.1 对象的构造顺序6.1.2 虚函数6.1.3 构造函数中对虚函数的调用06.01.cpp 6.2 对象复制语义学与析构函数语义学6.2.1 对象的默认复制行为6.2.2 拷贝赋值运算符与拷贝构造函数6.2.3 禁止对象的拷贝构造和赋…

一维小波包的分解与重构程序深入学习——Matlab

绘制上述图的matlab程序为&#xff1a; clear all; close all; load noisdopp; xnoisdopp; wptwpdec(x,3,db1,shannon) %返回小波包树&#xff0c;设置采用的熵为shannon plot(wpt); %% 学习目标&#xff1a;一维小波包的分解和重构深入学习 %% 获取小波树上某个节点的小…

代码随想录day21(1)二叉树:平衡二叉树(leetcode110)

题目要求&#xff1a;判断一棵树是否为平衡二叉树 思路&#xff1a;递归地比较左右子树&#xff0c;只要有一棵子树不满足条件就说明这棵树不是平衡二叉树。本题采用迭代法较为复杂。 leetcode实战&#xff1a; 代码实现&#xff1a; 递归&#xff1a; 迭代&#xff1a;

python失物招领系统-安卓-flask-django-nodejs-php

对于本失物招领 的设计来说&#xff0c; 它是应用mysql数据库、安卓等技术动态编程以及数据库进行努力学习和大量实践&#xff0c;并运用到了 建设中在整个系统的设计当中&#xff0c;具体根据网上失物招领的现状来进行开发的&#xff0c;具体根据用户需求实现网上失物招领网络…

Java 设计模式系列:行为型-状态模式

简介 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;允许一个对象在其内部状态改变时改变其行为。状态模式中类的行为是由状态决定的&#xff0c;在不同的状态下有不同的行为。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂…

ES进程除了kill之外,有什么优雅关闭的方式吗?

问题 Linux环境中&#xff0c;Elasticsearch 8的进程除了kill之外&#xff0c;有什么优雅关闭的方式吗&#xff1f; 具体方式 在Linux环境中&#xff0c;Elasticsearch&#xff08;ES&#xff09;进程可以通过多种方式实现优雅关闭&#xff0c;这种方式允许它完成必要的清理…

[Labtools 27-1429] XML parser encountered a problem in file

平台&#xff1a;Vivado2108.3 最近在使用vivado的debug过程中发现&#xff0c;编译好工程后打开open hardware manager出现如下错误。 [Labtools 27-1429] XML parser encountered a problem in file E:/githome/xxxx/hw_1/hw.xml at line 1 : XML character encoding not su…

逐笔成交、委托数据的因子计算

3.2 逐笔成交数据的因子计算 逐笔成交数据包含的信息很丰富&#xff0c;可以构建很多中高频因子。以下为逐笔成交的样例数据&#xff1a;利用逐笔成交数据中的买卖订单号&#xff0c;可以将其合并为单笔订单成交数据&#xff0c;并从单笔订单的角度区分大小单和主买卖方向等。本…

智能合约语言(eDSL)—— 使用rust实现eDSL的原理

为理解rust变成eDSL的实现原理&#xff0c;我们需要简单了解元编程与宏的概念,元编程被描述成一种计算机程序可以将代码看待成数据的能力&#xff0c;使用元编程技术编写的程序能够像普通程序在运行时更新、替换变量那样操作更新、替换代码。宏在 Rust 语言中是一种功能&#x…

机器人离散化阻抗控制

机器人离散化阻抗控制是一种控制策略&#xff0c;它结合了阻抗控制的思想与离散化方法&#xff0c;以实现对机器人运动与外力之间动态关系的精细调节。这种控制方法旨在使机器人在与环境交互时能够表现出期望的阻抗特性&#xff0c;从而实现对接触力和位置的精确控制。 在离散…

opencv逐帧获取视频图片

背景 由于我要做一个深度学习方向的计算机视觉项目&#xff0c;需要一些数据集来进行训练&#xff0c;我便想尝试捕获视频中的图片用来标注。 注意事项 如果视频中的场景单一&#xff0c;那么使用该视频获取的数据集训练出的模型面对其他场景的泛化能力就会受到限制。为了提…

自动化单元测试 Automatic Test Generation

自动化单元测试 Automatic Test Generation Parasoft C/Ctest / wing / VectorCast https://patricegodefroid.github.io/public_psfiles/talk-issta2010.pdf 一、自动化测试技术 软件研发生命周期的各个阶段都有自动化测试技术的存在&#xff0c;并且对提升测试效率有着至…

STM32—控制蜂鸣器(定时器)

目录 1 、 电路构成及原理图 2 、编写实现代码 main.c tim_irq.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 定时器中断是利用定时器的计数功能&#xff08;向上计数或向下计…

虚拟DOM是什么以及React 和Vue中有何区别

虚拟 DOM&#xff08;Virtual DOM&#xff09;是一种编程概念&#xff0c;其中 UI 的状态被保存在内存中&#xff0c;作为一个虚拟的节点树&#xff08;或者说是 JavaScript 对象&#xff09;&#xff0c;然后通过一个叫做 “对比&#xff08;diffing&#xff09;” 的过程来更…

算法---二分查找练习-3(山脉数组的顶峰索引)

山脉数组的顶峰索引 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 初始化两个指针 left 和 right&#xff0c;分别指向数组的起始位置和结束位置。 进入循环&#xff0c;循环条件为 left < right。 在每次循环中&…

Visual Studio - 添加快捷键图标

Visual Studio - 添加快捷键图标 1. Text Editor Toolbar Options -> Add or Remove Buttons -> Customize2. Toolbars3. Commands -> Debug4. Add Command...References 1. Text Editor Toolbar Options -> Add or Remove Buttons -> Customize 2. Toolbars B…

机器学习-05-特征工程

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中特征工程部分。 参考 机器学习之特征工程详解 特征工程&#xff08;Feature Engineering&#xff09; 特征工程是指使用专业的背景知识和技巧处理数据&#xff0c;使得特征能在机器学习算法上发生更好的…

Python数据分析与可视化笔记 三 了解数据 数据分类 集中趋势 离散程度 相关性测量 数据缺失 噪声 离群点

数据分为定性数据和定量数据。 定性数据包括两个基本层次&#xff0c;即定序(ordinal)和定义(nominal)层次。定序变量是指该变量只是对某些特性的“多少”进行排序&#xff0c;但各等级之间的差别不确定。例如评价一个事物有“好”、“一般”、“不好”三个等级&#xff0c;但各…

深入剖析Apache Kafka Partition:结构、策略与影响

引言 Apache Kafka作为一款高性能、分布式的消息系统&#xff0c;其出色的吞吐量和持久化能力在大数据领域备受青睐。而Partition作为Kafka架构中的重要基石&#xff0c;不仅决定了系统的可扩展性和并行处理能力&#xff0c;而且对消息的有序性、可用性和容错性起到关键作用。…