- 博客(10)
- 收藏
- 关注
原创 【Linux】 基础IO流
目录c语言基础IO介绍系统IO接口文件描述符在正式介绍IO流之前 先简单的了解一下IO流在c语言中的应用printf()函数,我们在c语言中不能再熟悉的函数,可是为什么调用这个函数就会向显示器上打印内容呢?先介绍一下c语言操作相关的函数 fopen(),fwrite(),fread()首先打开一个文件(没有的话则创建一个)fread函数原型size_t fread(void * buffer ,size_t size, size_t count, FILE *stream
2022-04-18 19:00:47 1940
原创 C++ 模拟实现简易STL——string
在网上看到一种拷贝构造函数的思路在这里给大家分享一下就本类来说我最初写的拷贝构造为 //普通版本 string(const string& s1) :_size(s1._size), _capacity(_size+1) { _str = new char[_capacity + 1]; strcpy(_str, s1._str); }之后修改的拷贝构造string(const string& s1) :_str(nullptr),.
2022-03-01 16:30:42 638
原创 c++基础语法——引用
c++中引用的定义:引用为对象起了另外一个名字,通过将声明符写成&d的形式来定义应用类型,其中d是声明的变量名。(所以的实例均是在vs2013下)举个例子来说:b是a的引用,即int a=10;int &b=a;通俗的来说b就是a的另一个名字,b和a公用一块内存空间。注意:定义引用是一定要进行初始化。2.一个变量可以有多个引用 (就好像一个人有好几个不同的称呼,但实际上都是一个人)3.引用做返回值在了解这个知识点之前需要知道 函数在值传递的时的操作在Add函数中执行完之后
2021-11-28 17:58:13 541
原创 堆排序(思路及c实现)
我起初认为的堆排序刚接触堆排序的时候 将元素通过算法排成大堆或者小堆,之后将大(小)堆的元素逐个取出 ,但在继续学习的过程中发现了每次进行 堆顶元素取出时 堆的结构就被破坏 所以每次取出后都需要重新将数据排序成小(大)堆,但是这样的时间复杂度就和O(n2)的算法无异了,体现不出O(logn)排序的优势。真正的堆排序在后面的学习中了解到真正的堆排序 (以降序为例)具体思路是将堆顶的元素与堆的最后一个元素进行交换(这里的堆是顺序堆),然后将堆的size–此时堆的size为6,将 0位置的1和6位
2021-11-13 12:37:36 1010
原创 使用堆解决数据量大的TOPK问题
要想解决TOPK问题 肯定是要将数据进行排序 对于小数据来说 直接进行排序即可但是要从上亿或者上十亿的数据中找到TOPK的话 数据在内存中是存不下的所以今天介绍一种用堆来解决这种问题的思路首先介绍一下堆的基本算法顺序堆的基本类型typedef struct heap{ int* a; int size; int capacity;}HP;建立小堆void HeapPush(HP* hp, HPDataType x){ assert(hp); if (hp->s
2021-11-06 13:27:36 184
原创 模拟实现字符串函数
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include <string>#include<assert.h>char* my_strstr(const char* str1, const char* str2){ char* cp = (char*)str1; char* s1, * s2; if (!*str2) { ret
2021-10-03 10:56:12 87
原创 单链表基本操作(保姆级教程)c语言
单链表定义:1、表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。2、链表的结点结构┌───┬───┐│data│next│└───┴───┘data域–存放结点值的数据域next域–存放结点的直接后继的地址(位置)的指针域(链域)。单链表的基本操作:1.头文件 数据类型准备2.单链表的初始化3.单链表的显示4.单链表的头插法5.单链表的插入方法6.单链表的删除7.单
2021-08-08 20:12:57 1986
原创 二分算法简单介绍
二分算法,顾名思义 就是把一组有序数据的搜索区域缩小一半。下面给大家举例说明一下 如何确定被缩小的搜索区间。原理分析拿一个有序的整形数组来举例 int a[10]={1,2,3,4,5,6,7,8,9,10},在初始算法的时候 应该确定左端点low,右端点high以及(mid=(low+high)/2)要搜索的目标值key,这里的左端点就是a[0],右端点为a[9],key为 a[6]。开始运算时,第一次的a[mid]<a[key]所以应该舍去的搜索区域为a[0]到a[mid...
2021-07-20 12:50:30 986
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人