![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 78
一起学编程
这个作者很懒,什么都没留下…
展开
-
【项目实战】C/C++语言带你实现:围棋游戏丨详细逻辑+核心源码
下围棋的程序,实现了界面切换,选择路数,和围棋规则,也实现了点目功能,不过只有当所有死子都被提走才能点目,不然不准确原创 2023-02-16 17:16:30 · 6233 阅读 · 2 评论 -
【算法】几分钟时间让你彻底学会—空间复杂度
算法之空间复杂度:衡量一个算法运行需要开辟的额外空间原创 2022-08-30 16:01:37 · 200 阅读 · 0 评论 -
【算法】几分钟时间让你彻底学会—时间复杂度
时间复杂度:衡量一个算法的运行速度原创 2022-08-27 15:31:03 · 176 阅读 · 0 评论 -
数据结构:十分钟带你了解时间复杂度(算法的时间复杂度)
我们假设计算机运行一行基础代码需要执行一次运算。那么上面这个方法需要执行 2 次运算这个方法需要 (n + 1 + n + 1) = 2n + 2 次运算。我们把 算法需要执行的运算次数 用 输入大小n 的函数 表示,即 T(n) 。此时为了 估算算法需要的运行时间 和 简化算法分析,我们引入时间复杂度的概念。定义:存在常数 c 和函数 f(N),使得当 N >= c 时 T(N) <= f(N),表示为 T(n) = O(f(n)) 。如图:当 N &.转载 2022-04-25 19:07:50 · 1744 阅读 · 0 评论 -
知识分享:数据结构常用 7 种排序算法(无基数排序)
为了让大家掌握多种排序方法的基本思想,本篇文章带着大家对数据结构的常用七大算法进行分析:包括直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序等,并能够用高级语言实现。希望通过对这些算法效率的比较,加深对算法的理解。①插入排序②折半插入排序③选择排序④起泡排序⑤快速排序⑥希尔排序⑦堆排序⑧归并排序排序算法的分析图解:用随机数(介于1-100)产生10个待排序数据元素的关键字值)。① 采用直接插入排序和希尔原创 2022-03-14 16:00:25 · 211 阅读 · 0 评论 -
C++经典算法问题:输油管道问题丨排序算法实战
问题说明某石油公司计划建造一条由东向西的主输油管道。 该管道要穿过一个有n 口油井的油田。 从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。 如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向), 应如何确定主管道的最优位置, 即使各油井到主管道之间的输油管道长度总和最小的位置?功能说明本程序用排序求中值的方法求解输油管道问题。代码简述通过用户输入数据(只输入油井数n、每个油井的y坐标), 程序输入检测,动态分配空间,排序(使用快速排序), 求出中间..原创 2021-10-08 19:16:26 · 799 阅读 · 0 评论 -
C++经典算法问题:循环赛日程安排问题(分治思想)
问题说明设有n=2k个选手要进行网球循环赛, 要求设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次。按此要求,可将比赛日程表设计成一个 n 行n-1列的二维表, 其中,第 i 行第 j 列表示和第 i 个选手在第 j 天比赛的选手。功能说明本程序运用分治的思想,实现了循环赛日程安排问题的求解, 生成日程表,输出。代码简述通过用户输入数据,程序输入检测,动态分配空间, 调用生成日程表函数,显示输出。其中,生成日程..原创 2021-10-07 18:40:02 · 3085 阅读 · 1 评论 -
C++经典算法问题:冯诺依曼邻居问题丨两种解法(内含源码示例)
问题说明某算法从一个1×1的方格开始,每次都会在上次图形的周围再加上一圈方格,在第n次的时候要生成多少个方格?下图给出了n = 0,1,2是的结果。解法一:本程序使用通项公式求解代码简述若设第n次生成的方格数是a(n),则:a(1) = a(0) + 4 * 1 a(2) = a(1) + 4 * 2 a(3) = a(2) + 4 * 3 ... a(n) = a(n-1) + 4 * n化简可得:a(n) - a(1) = 4 * (n + (n-1) + ... +..原创 2021-10-06 17:00:47 · 648 阅读 · 0 评论 -
C++经典算法问题:背包问题(迭代+递归算法)!含源码示例
问题说明有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。功能说明本程序用动态规划的思想解决了背包问题,并用了两种算法: 迭代法、递归法。在迭代法中实现了打印背包问题的表格。代码简述通过用户输入数据,程序输入检测,动态分配空间,选择算法, 用动态规划的思想求解背包问题。迭代法:通过遍历n行W列,迭代每行每列的值,并把最优解放到 n行(在数组中为第n+1行)W列(在..原创 2021-10-05 19:01:43 · 772 阅读 · 0 评论 -
C++经典算法问题:棋盘覆盖问题(分治算法)!含源码示例
棋盘覆盖问题问题说明在一个2^k * 2^k个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格。棋盘覆盖问题就是要用图示的4种不同形态的L型骨牌覆盖给定棋盘上除特殊方格之外的所有方格,且任何2个L型骨牌不得重叠覆盖。功能说明本程序用分治法的思想解决了棋盘覆盖问题,显示输出代码简述用户输入数据,程序输入检测,动态分配空间,调用棋盘覆盖函数,把计算结果存储到board(二维数组指针),显示输出。其中棋盘覆盖函数用分治的思想把棋盘分成四份,递归求解。源..原创 2021-10-04 18:42:10 · 2995 阅读 · 0 评论 -
C++基础语法梳理:算法丨查找算法(全)
本期是C++基础语法分享的第十七节,今天给大家来梳理一下查找算法!顺序查找int SequentialSearch(vector<int>& v, int k) { for (int i = 0; i < v.size(); ++i) if (v[i] == k) return i; return -1;}/* The following is a Sentinel Search Algorithm which only performs原创 2021-10-02 15:44:20 · 316 阅读 · 0 评论 -
C++基础语法梳理:算法丨十大排序算法(二)
本期是C++基础语法分享的第十六节,今天给大家来梳理一下十大排序算法后五个!归并排序归并排序:把数据分为两段,从两段中逐个选最小的元素移入新数据段的末尾。可从上到下或从下到上进行。/***************** 迭代版*****************///整數或浮點數皆可使用,若要使用物件(class)時必須設定"小於"(<)的運算子功能template<typename T>void merge_sort(T arr[], int len) {原创 2021-09-27 14:50:44 · 188 阅读 · 0 评论 -
C++基础语法梳理:算法丨十大排序算法(一)
本期是C++基础语法分享的第十五节,今天给大家来梳理一下十大排序算法前五个!冒泡排序冒泡排序思路:1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。3. 针对所有的元素重复以上的步骤,除了最后一个。4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。示例:// 冒泡排序void BubbleSort(vector<int>原创 2021-09-24 19:17:12 · 153 阅读 · 0 评论 -
知识分享:程序员必备的七种常见排序算法和搜索算法
接下来就让我们来一起学习如何实现几个常用排序和搜索算法吧.冒泡排序及其优化我们在学排序算法时, 最容易掌握的就是冒泡排序, 因为其实现起来非常简单,但是从运行性能的角度来看, 它却是性能最差的一个.冒泡排序的实现思路是比较任何两个相邻的项, 如果前者比后者大, 则将它们互换位置.为了更方便的展示冒泡排序的过程和性能测试,笔者先写几个工具方法,分别为动态生成指定个数的随机数组, 生成元素位置序列的方法,代码如下:有了以上两个方法,我们就可以生成任意个数的数组以及数组项坐标了,这两个原创 2021-09-06 15:18:01 · 234 阅读 · 0 评论 -
【算法知识】常用算法详解丨二分查找法(折半查找)
1.概念如果想要在数组中查找一个数,最基本的方法就是暴力解法:一次遍历,这时候时间复杂度是O(N),二分查找就是其中的一种优化,时间复杂度是O(logN);具体做法是一步一步逼近直到找到。前提是数组需要是一个排序数组。定义:二分查找也称折半查找(Binary Search),是一种在有序数组中查找某一特定元素的搜索算法。我们可以从定义可知,运用二分搜索的前提是数组必须是有序的,这里需要注意的是,我们的输入不一定是数组,也可以是数组中某一区间的起始位置和终止位置2.过程1.二分查找先初始化原创 2021-08-05 18:41:17 · 783 阅读 · 0 评论 -
社招面试题:常见 14 种算法解题模式!套模板都能拿高薪
来源丨机器学习爱好者社区编辑丨极市平台导读曾在 Facebook 和微软工作过的 Educative.io 创始人 Fahim ul Haq 发文总结了编程面试所遇到的问题的 14 种最常见的模式,也许能帮你看清各种编程面试问题「背后的真相」。貌似2022届校招提前批已经快开始了,现在不管是校招还是社招算法题肯定会被考察到,要么让你手写代码,要么在线做题。最近看到一篇不错的算法讲解文章,现在分享给大家!这篇文章关于常见的算法解题套路,总结了 14 种算法模式,讲的挺好的。...转载 2021-07-30 14:27:56 · 449 阅读 · 0 评论 -
盘点 10 种经典排序算法!建议收藏
原文地址:十大经典算法总结在传统的计算机算法和数据结构领域,大多数专业教材和书籍的默认语言都是C/C+ +,但是今天我们还是用JavaScript来动动手!算法的由来:9世纪波斯数学家提出的:“al-Khowarizmi”就是下图这货(感觉重要数学元素提出者貌似都戴了顶白帽子),开个玩笑,阿拉伯人对于数学史的贡献还是值得人敬佩的。正文排序算法说明(1)排序的定义:对一序列对象根据某个关键字进行排序;输入:n个数:a1,a2,a3,...,an 输出:n个数的排列:a1',a..转载 2021-07-07 18:51:03 · 636 阅读 · 0 评论