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

C++ 算法教程

 归并排序
#include<iostream>
using namespace std;
template <class T>
void Merge(T data[],int start,int mid,int end)
{int len1 = mid - start + 1, len2 = end - mid;int i, j, k;T* left = new int[len1];T* right = new int[len2];for (i = 0; i < len1; i++)left[i] = data[i + start];for (i = 0; i < len2; i++)right[i] = data[i + mid + 1];i = 0, j = 0;for (k = start; k < end; k++){if (i == len1 || j == len2)break;if (left[i] <= right[j])data[k] = left[i++];elsedata[k] = right[j++];}while (i < len1)data[k++] = left[i++];while (j < len2)data[k++] = right[j++];delete[] left;delete[] right;
}
template <class T>
void MergeSort(T data[], int start, int end)
{if (start < end){int mid = (start + end) / 2;MergeSort(data, start,mid);MergeSort(data, mid + 1, end);Merge(data, start, mid, end);}
}
void show(int*temp,int n)
{for (int i = 0; i < n; i++)cout << temp[i] << "  ";
}
void main()
{int temp[8];for (int i = 0; i < 8; i++)cin >> temp[i];MergeSort<int>(temp, 0,7);show(temp, 8);
}

冒泡排序_相邻交换

#include <stdio.h>  int main()  
{  int i,p,temp;  int array[10] = {2,6,1,9,4,7,5,8,3,0};  printf("Display this array:\n");  for(i=0;i<10;i++)  {  printf("%d ",array[i]);  }  for(i = 1;i < 10; ++i)
{for(p = 0; p < 10; ++p){if(array[i]>array[p]){array[i] = 	array[i]^array[p];array[p] = array[i]^array[p];	array[i] = array[i]^array[p];}}
}printf("\n");  printf("After sorting,this array is:\n");  for(i=0;i<10;i++)  {  printf("%d ",array[i]);  }     printf("\n");  return 0;  
}  
判断循环链表

1.建立set集合,每次遍历存储元素,当集合大小不变,但循环仍在继续时说明存在循环,并得出该位置
2.定义双指针遍历:一个指针每次移动一个节点,一个指针每次移动2个节点,当2个节点指针在一个节点指针后面时,此链表存在循环。
3.链表反向
4.构造双向链表

swap

a:1001
b:1100
a=a^b;  a:0101
b=a^b;  b:1001
a=a^b;  a:1100

a = a + b;
b = a - b;
a = a - b;

直插排序
#include <stdio.h>  int main()  
{  int i,p,temp;  int array[10] = {2,6,1,9,4,7,5,8,3,0};  printf("Display this array:\n");  for(i=0;i<10;i++)  {  printf("%d ",array[i]);  }  //选择第一个数做为起始排序for(i = 1; i < 10; ++i){temp = array[i];	//待插入排序数for(p = i-1; p >=0 && array[p]>temp; --p){//遍历已排序数列表{//如果当前数大小在已排序范围中,开始向右位移一个数让出空间array[p+1] = array[p];	}}//找到待排序数的位置,在让出的空间直接插入		array[p+1]=temp;			}printf("\n");  printf("After sorting,this array is:\n");  for(i=0;i<10;i++)  {  printf("%d ",array[i]);  }     printf("\n");  return 0;  
}  

#include <stdio.h>  int main()  
{  int i,j,t;  int array[10]={2,7,1,8,5,9,3,4,0,6};  printf("\nDisplay this array:\n");  for(i=0;i<10;i++)  {  printf("%d ",array[i]);  }  printf("\n");  for(i=1;i<=9;i++)  {  //遍历int t = i-1;  //假设当前数为最小数for(j=i;j<10;j++)  {  if(array[j]<array[t])  {  //遍历找到最小的数,保存最小数索引t=j;  }  }  if(t!=(i-1))  {  //交换最小数与假设最小数int temp = 0;  temp=array[i-1];  array[i-1]=array[t];  array[t]=temp;  }  }  printf("After sorting,this array is:\n");  for(i=0;i<10;i++)  {  printf("%d ",array[i]);  }  printf("\n");  return 0;  
}  

https://github.com/sashafierce/100-days-of-Algorithm-Challenge

GitHub - hackerkid/Awesome-Data-Structures: C++ implementation of basic data structures and algorithms

GitHub - hackerkid/LightOJ-Solutions: :sparkles: LightOJ Solutions with hints

GitHub - mmc-maodun/Data-Structure-And-Algorithm: Data Structure And Algorithm(常用数据结构与算法C/C++实现)

https://leetcode.com/

Codewars - Achieve mastery through coding practice and developer mentorship

Khan Academy | Free Online Courses, Lessons & Practice

https://github.com/sashafierce/Algo_Ds_Notes

位操作基础篇之位操作全面总结_c++位操作-CSDN博客

https://www.cnblogs.com/findumars/p/5180528.html


创作不易,小小的支持一下吧!

相关文章:

C++ 算法教程

归并排序 #include<iostream> using namespace std; template <class T> void Merge(T data[],int start,int mid,int end) {int len1 mid - start 1, len2 end - mid;int i, j, k;T* left new int[len1];T* right new int[len2];for (i 0; i < len1; i)…...

【支持向量机】问题梳理

学完支持向量机后我有些地方不太清楚&#xff0c;故做如下梳理&#xff1a; 1.为什么支持向量机模型认为一个点划分正确的标志是y(wxb)>1呢&#xff0c;为什么不是y(wxb)>0&#xff0c;比如y为1&#xff0c;wxb为0.5&#xff0c;大于0&#xff0c;则预测正确。 2.所以意思…...

车载网络安全指南 网络安全框架(二)

返回总目录->返回总目录<- 目录 一、概述 二、网络安全组织管理 三、网络安全活动 四、支撑保障 一、概述 汽车电子系统网络安全活动框架包含汽车电子系统网络安全活动、组织管理以及支持保障。其中,网络安全管理活动是框架的核心,主要指汽车电子系统生命周期各阶段…...

元数据、数据元、数据字典、数据模型及元模型的区别详解

在数据管理和分析领域&#xff0c;有许多相似的概念&#xff0c;如元数据、数据元、数据字典、数据模型和元模型。这些概念的定义和应用往往容易混淆。 数据元 数据元是通过一系列属性描述的数据单元&#xff0c;包括定义、标识、表示以及允许值等。这些属性帮助我们理解和使用…...

【百度智能体】零代码创建职场高情商话术助手智能体

一、前言 作为一个程序猿&#xff0c;工科男思维&#xff0c;走上职场后&#xff0c;总会觉得自己不会处理人际关系&#xff0c;容易背锅说错话&#xff0c;这时候如果有个助手能够时时刻刻提醒自己该如何说话如何做事情就好了。 而我们现在可以通过百度文心智能体平台构建各…...

实战项目: 负载均衡

0. 前言 这个项目使用了前后端,实现一个丐版的LeetCode刷题网站,并根据每台主机的实际情况,选择对应的主机,负载均衡的调度 0.1 所用技术与开发环境 所用技术: C STL 标准库 Boost 准标准库 ( 字符串切割 ) cpp- httplib 第三方开源网络库 ctemplate 第三方开源前端网…...

运维监控系统

做监控系统集成&#xff0c;持续更新ing 1.Prometheus k8s安装prometheusdocker部署prometheusthanos实现prometheus高可用部署 2.Grafana docker安装grafanagrafana的admin密码忘记了grafana使用mysql远程存储 3.Alertmanager 4.Consul 5.夜莺系统 6.时序数据库 6.1 …...

第3章 Unity 3D着色器系统

3.1 从一个外观着色器程序谈起 新建名为basic_diffuse.shader的文件&#xff0c;被一个名为basic_diffuse.mat的材质文件所引用&#xff0c;而basic_diffuse.mat文件则被场景中名为Sphere的game object的MeshRenderer组件所使用。 basic_diffuse.shader代码文件的内容如下所示…...

Qt项目天气预报(1) - ui界面搭建

ui中部 效果演示 ui效果 显示效果 控件列表 配合右图查看 居中对齐-label 设置label居中对齐(别傻傻的空格对齐了) 间距配置 widget03 外围的widget对象: 包含label 和 widget0301&#xff0c;如下图 widget0301 内围的widget对象&#xff0c;如下图 样式表 widget03 …...

一、从C语言到C++(一)

一、从C语言到C&#xff08;一&#xff09; C介绍C语言和C的联系C介绍 头文件命名空间定义命名空间使用命名空间中的名称使用using声明或指令命名空间与C语言的对比给命名空间起别名注意事项std 标准输入输出std::endl使用std::cout进行输出使用std::cin进行输入格式化输出 C介…...

MySQL(5)

聚合函数 GROUP BY 的使用 需求&#xff1a;查询各个部门的平均工资&#xff0c;最高工资SELECT department_id,AVG(salary),SUM(salary)FROM employeesGROUP BY department_id;需求&#xff1a;查询各个job_id的平均工资SELECT job_id,AVG(salary)FROM employeesGROUP BY jo…...

区块链之快照

定义 区块链快照是区块链技术中一个非常重要的概念,它可以帮助区块链系统提高性能和数据管理效率。 什么是区块链快照 区块链快照是指在某个时间点对整个区块链的状态进行保存和备份的过程。 快照会记录区块链上所有账户的余额、合约状态等信息,并将其序列化存储起来。 这样…...

自学前端第一天

HTML标签 ’HTML‘全程是‘hypertext Markup langage(超文本标记语言) HTML通过一系列的’标签&#xff08;也称为元素&#xff09;‘来定义文本、图像、链接。HTML标签是由尖括号包围的关键字。 标签通常成对存在&#xff0c;包括开始标签和结束标签&#xff08;也称为双标签…...

SQL Server几种琐

SQL Server 中的锁类型主要包括以下几种&#xff0c;它们用于控制并发访问和数据一致性&#xff1a; 1. 共享锁&#xff08;Shared Lock&#xff0c;S 锁&#xff09;&#xff1a; - 用于读取操作&#xff08;如 SELECT 语句&#xff09;。 - 允许多个事务同时读取同一资…...

redis 一些笔记1

redis 一、redis事务二、管道2.1 事务与管道的区别 三、主从复制3.13.2 权限细节3.3 基本操作命令3.4 常用3.4.1 一主几从3.4.2 薪火相传3.4.3 反客为主 3.5 步骤3.6 缺点 一、redis事务 放在一个队列里&#xff0c;依次执行&#xff0c;并不保证一致性。与mysql事务不同。 命…...

【计网复习】应用层总结(不含HTTP和错题重点解析)

应用层总结&#xff08;不含HTTP和错题重点解析&#xff09; 应用层简介 应用层的主要功能常见的应用层协议小林对于应用层通常的解释 网络应用模型 客户端-服务器模型&#xff08;Client-Server Model, C/S&#xff09; 特点优点缺点应用场景 对等网络模型&#xff08;Peer-to…...

carbondata连接数优化

一&#xff0c;背景 carbondata的入库采用arbonData Thrift Server方式提供&#xff0c;由于存在异常的入库segments但是显示状态是success&#xff0c;所以每天运行另一个博客中的脚本&#xff0c;出现连接超时&#xff0c;运行不正常&#xff0c;排查是每天连接数太多&#x…...

云和运维(SRE)的半生缘-深读实证02

这个标题不算太夸张&#xff0c;云计算和很多IT岗位都有缘&#xff0c;但是和运维&#xff08;SRE&#xff09;岗位的缘分最深。 “深读实证”系列文章都会结合一些外部事件&#xff0c;点明分析《云计算行业进阶指南》书中的内容。本次分享介绍了下列内容&#xff1a; 我以运维…...

java基础操作5——java自定义获取任意年、月、日的起始和结束时间

在实际项目开发过程中&#xff0c;获取任意时间的起始和结束时间是常用操作&#xff0c;尤其对于统计业务来说&#xff0c;更是必要操作&#xff0c;理解了时间自定义的规律&#xff0c;对于开发人员的效率提升是大有裨益的。 一.获取任意年的起始和结束时间 1.获取任意年的起…...

【Java04】引用变量数组初始化的内存机制

引用类型数组指向的元素也是引用。其本质是&#xff1a; 由一个在栈上的引用数组变量指向一块堆内存&#xff1b;这块堆内存里存储的元素是引用&#xff0c;又分别指向其他堆内存。 class Person // Person是一个自定义的类 {public int age;puiblic double height;public vo…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...