![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++/算法
小小柴
这个作者很懒,什么都没留下…
展开
-
c语言 如何读取txt中的某一行,并且把每一行中的数据挨个读出来
如图所示,我的txt文本如下所示,我想读取第10行的数据,并且把第10行的7个数据都取出来:int SetPositionByLine(FILE *fp, int nLine){ int i = 0; char buffer[100]; fpos_t pos; rewind(fp); for (; i < nLine; i++) fgets(buffer, 100, fp); fgetpos(fp, &pos); retu...原创 2020-12-18 17:25:53 · 7991 阅读 · 1 评论 -
64位数值强制转换为32位
在程序中经常看到将int64的类型强制转换为int32类型,转换前后发生什么样的变化呢?int64 a=xxxxx;int32 b=0;b=a;b=a的过程几完成了强制转换。其实强制转换的过程很简单,即保留最低位的32位。如下图所示:...原创 2019-08-19 20:15:25 · 16972 阅读 · 0 评论 -
基础算法复习之八:矩阵相乘
#include<stdio.h>#include<iostream>#include<vector>#include<algorithm>#include<limits.h>using namespace std;//矩阵相乘vector<vector<int>> MATMUL(vector&a原创 2018-08-20 23:35:25 · 288 阅读 · 0 评论 -
基础算法复习之七:最小生成树
转载自:https://blog.csdn.net/qq_35644234/article/details/59106779#commentsedit记录两个最小生成树算法,一个是Prim算法,一个是kruskal算法, 前者针对点展开,适合稠密图,后者针对边来展开,所以适合稀疏图(这里的稠密稀疏是对边来说的);1.prim算法,时间复杂度为O(N^2),N是顶点的个数prim算法的基...转载 2018-08-20 14:34:56 · 243 阅读 · 0 评论 -
基础算法复习之六:最短路径算法
记录两种最短路径算法,一种是迪杰斯特拉算法,一种是弗洛伊德算法: 最短路径是指两个顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点;1.迪杰斯特拉算法(Djikstra),时间复杂度为O(N^2);#include<stdio.h>#include<iostream>#include<vector>...转载 2018-08-19 23:31:21 · 309 阅读 · 0 评论 -
基础算法复杂之五:堆排序
堆排序是不稳定排序,时间复杂度最好,最坏,平均都为O(logn):堆排序的基本思想是: 先将无序序列按照升序或者降序需求构造成一个大顶堆或者小顶堆; 将堆顶元素与末尾元素交换,然后重使最大元素沉到数组末端; 重新调整堆使其成为大顶堆,继续交换堆顶元素和末尾元素,反复执行交换+调整,知道整个序列有序;其中,大顶堆的概念是每个节点的值比其左右子节点的值都大,小顶堆...转载 2018-08-19 21:31:57 · 208 阅读 · 0 评论 -
基础算法复习之四:插入排序
插入排序的基本思想是遍历每一个元素,当遍历到第N个元素是,前面N-1个元素是排序好的,此时在前面选择合适的位置,将第N个元素插入,是稳定排序,时间复杂度是O(n^2);#include<stdio.h>#include<iostream>#include<vector>#include<algorithm>using namespac...原创 2018-08-19 20:14:54 · 182 阅读 · 0 评论 -
基础算法复习之三:选择排序
简单选择排序的基本思想是每次在剩余数值中选择一个最小值放在已排序数组的后面,是不稳定排序,时间复杂度为O(n^2);#include<stdio.h>#include<iostream>#include<vector>#include<algorithm>using namespace std;//选择排序void swap(int...原创 2018-08-19 19:18:22 · 246 阅读 · 0 评论 -
基础算法复习之二:归并排序
归并排序是稳定排序,且其最好,最坏,平均时间复杂度均为O(nlogn);#include<stdio.h>#include<iostream>#include<vector>#include<algorithm>using namespace std;//快速排序void merge(vector<int>& n...原创 2018-08-19 17:56:54 · 259 阅读 · 0 评论 -
基础算法题复习之一:快速排序
先对排序算法来个总结: 其中不稳定的有:快,选,希,堆;时间复杂度为O(NlogN)的有:快,归,堆, 其中后两者的平均最好和最坏的时间复杂度都一样,而快速排序的最差复杂度为O(n^2),即初始排序为完全逆序的时候,所以快速排序的性能是会受到初始排序的影响的;即稳定时间复杂度又低的最优排序算法应该是归并排序,但是归并算法的空间复杂度为O(N);希尔排序的平均,最好,最坏的...原创 2018-08-19 16:58:06 · 586 阅读 · 0 评论 -
leetcode编程题错误记录之一:evaluate-reverse-polish-notation
我的代码,在VS上能运行,在牛客上显示程序段错误;int evalRPN(vector<string> &tokens){ if (tokens.size() == 0) return 0; int sum = 0; stack <int> stk; for (int i = 0; i < tokens....原创 2018-07-27 16:16:32 · 194 阅读 · 0 评论 -
TCP/IP协议学习记录之一:ppp适配器和以太网适配器
首先看几个图片1.当我的电脑有宽带连接的时候,在cmd窗口ipcofig会出现:会显示两个IP地址,一个是PPP适配器的宽带连接,一个是以太网适配器的本地连接,然后我们分别来ping这两个IP地址都显示连接正常,没问题; 2.我把电脑上的宽带连接断开,输入ipconfig此时只有一个以太网适配器的IP地址,没有了PPP适配器的IP地址;此时我再去ping第一步中...原创 2018-07-30 11:36:55 · 10271 阅读 · 2 评论 -
error:视警告为错误,没有生成“object”文件
昨天调试代码的时候遇到了如题所示的问题,百度了一下,提示右击选择属性->配置属性->c/c++->常规,将“警告视为错误”的选项改为“否”,但是这个成功的前提是你的程序中没有任何警告。所以在遇到这个问题之前,现确保程序里没有警告,再设置一下属性就OK了。...原创 2018-07-19 09:32:53 · 1769 阅读 · 0 评论 -
stack around the variable ‘ishift’ was corrupted
修改代码的时候好几次遇到了这种问题,原因都是数组下标越界了。而且这个错误跟他提示里的变量‘ishift’其实没有关系,如果程序提示了这个错误,那么就在错误发生的函数里面老老实实看看数组哪里的下标越界了; 看到其他帖子说的什么把“project->配置属性->c/c++->代码生成->基本运行时检查 设置为默认值的操作在我这没有作用,老老实实检查代码吧。...原创 2018-07-02 10:01:18 · 324 阅读 · 0 评论 -
引发了异常:读取访问权限冲突
今天改代码的时候出现一个bug,提示引发了异常:读取访问权限冲突,排除了很久发现是数组越界了。所以以后遇到这个问题就要优先考虑是不是这个原因。...原创 2018-06-19 17:44:16 · 61043 阅读 · 5 评论 -
移位运算和加减运算的优先级
今天该代码的时候出现了一个bug,提示inter division by zero,怎么想也想不通会出错,后来发现时因为移位运算的优先级小于加减运算的优先级,导致被除数为0。...原创 2018-06-10 14:45:18 · 9430 阅读 · 0 评论 -
static_vector
static_vector是vector和array之间的混合体:与vector类似,它是一个连续存储的序列容器,它的大小可以随着静态分配,低开销和数组的固定容量而改变。 static_vector是基于Adam Wulkiewicz和Andrew Hundt的高性能varray类。 static_vector中元素的数量可能会动态变化,直到达到固定容量,因为元素与数组类似...原创 2018-05-27 22:59:10 · 3588 阅读 · 0 评论 -
二分查找
int binary_search(int a[],int n,int key){ int low=0; int high=n-1; int mid; while(low { mid=(low+high)/2; //mid的计算是在while循环里面,即每循环一次更新一次,否则会造成死循环; if(a[mid] low=mid+原创 2017-11-26 20:18:47 · 160 阅读 · 0 评论 -
插入排序,选择排序和快速排序,冒泡排序
#include#include#include#includeusing namespace std;int randomInRange(int start, int end) //产生在start和end之间的随机数;{ srand(time(NULL)); return start + rand()%(end-start+1); }void i原创 2017-11-26 16:35:04 · 442 阅读 · 0 评论