当前位置: 首页 > 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…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

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

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

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...