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

JAVA重点基础、进阶知识及易错点总结(10)Map 接口(HashMap、LinkedHashMap、TreeMap)

&#x1f680; Java 巩固进阶 第10天 主题&#xff1a;Map 接口深度解析 —— 键值对的高效艺术&#x1f4c5; 进度概览&#xff1a;掌握 Java 中最灵活的数据结构。 &#x1f4a1; 核心价值&#xff1a; 动态数据承载&#xff1a;SpringBoot 中接收前端动态参数 (Map<Stri…...

【BoClaw教程03】BoClaw实战:打工人常用技能

博云BoClaw官方教程系列&#xff08;三&#xff09;本教程聚焦打工人日常办公高频需求&#xff0c;详细讲解 BoClaw 在桌面整理、文档检索、PPT 制作、简历筛选、销售报表处理五大场景的实操方法、操作要点及避坑技巧&#xff0c;助力高效提升办公效率。1.桌面整理&#xff1a;…...

Ubuntu 22.04 换源+Docker安装+镜像加速

Ubuntu 22.04 换源Docker安装镜像加速 前言 本文针对 Ubuntu 22.04 LTS 系统&#xff0c;先更换国内镜像源提升下载速度&#xff0c;再完成 Docker 引擎与 Compose 插件安装&#xff0c;最后配置 Docker 国内镜像加速&#xff0c;全程无报错、可直接复制执行&#xff0c;适配 V…...

阿里云域名动态解析避坑指南:从AccessKey到API调用的完整流程

阿里云域名动态解析实战手册&#xff1a;从权限配置到高可用方案设计 对于拥有个人博客、家庭NAS或远程开发环境的技术爱好者而言&#xff0c;动态公网IP始终是个令人头疼的问题。每当ISP重新分配IP地址时&#xff0c;原本稳定的服务连接就会突然中断。本文将分享如何利用阿里云…...

5款部署方案的开源UML工具:开发者与设计师的高效协作绘图平台

5款部署方案的开源UML工具&#xff1a;开发者与设计师的高效协作绘图平台 【免费下载链接】umlet Free UML Tool for Fast UML Diagrams 项目地址: https://gitcode.com/gh_mirrors/um/umlet 开源UML工具UMLet是一款专为高效绘图设计的跨平台解决方案&#xff0c;它通过…...

Ostrakon-VL-8B零基础上手:无需代码,5分钟完成门店图片智能分析

Ostrakon-VL-8B零基础上手&#xff1a;无需代码&#xff0c;5分钟完成门店图片智能分析 1. 引言 想象一下&#xff0c;你是一家连锁便利店的区域经理&#xff0c;手下管着几十家门店。每周巡店检查&#xff0c;光是看照片、数货架、查价格标签&#xff0c;就要花掉大半天时间…...

3步突破设备壁垒:让VR内容在普通显示器上重生的开源方案

3步突破设备壁垒&#xff1a;让VR内容在普通显示器上重生的开源方案 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_…...

工业物联网时序数据库实战:Apache IoTDB 架构解析与性能调优指南

1. 工业物联网时序数据库的核心挑战 在智能制造和工业4.0时代&#xff0c;工厂车间里每台设备都像话痨一样不断"吐"数据——温度传感器每秒报告10次读数&#xff0c;振动监测仪每毫秒采集1组波形&#xff0c;这些数据如果堆起来&#xff0c;一年能填满几个三峡水库。…...

ROS2机械臂实战:ros2_control、MoveIt2与move_group核心问题排查指南

1. ROS2机械臂控制栈的核心组件解析 搞ROS2机械臂开发的朋友应该都熟悉这个经典组合&#xff1a;ros2_control负责硬件接口&#xff0c;MoveIt2处理运动规划&#xff0c;move_group作为执行层。这三个组件就像机械臂控制的"三驾马车"&#xff0c;任何一个环节出问题都…...

单轴晶体中的偏振转换

摘要 当线偏振光聚焦并通过单轴晶体传播时&#xff0c;即使沿着光轴方向&#xff0c;不同的偏振分量之间也可能会发生复杂的转换。这种现象可以应用于例如产生涡旋光。以方解石晶体为例&#xff0c;这个用例在VirtualLab Fusion中证明了单轴晶体中的偏振转换。并且可以观察到…...