自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mohican的博客

不着调就是我的调

  • 博客(64)
  • 收藏
  • 关注

原创 排序5:快速排序 (递归)

一.概述(1)快速排序是一种交换排序,通过一趟排序将要排序的数据分割成独立的两部分: 分割点边都是比它小的数,右边都是比它大的数。它由C. A. R. Hoare在1962年提出。二.算法思想1)通过一趟排序将要排序的数据分割成独立的两部分:分割点边都是比它小的数,右边都是比它大的数 (2)按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。...

2019-01-11 17:23:23 295

原创 排序4:希尔排序

一.概述希尔排序: 又称缩小增量排序,对一组数据按照间隔分组后,对每一组数据进行 【直接插入排序】,它也是插入排序的一种—加强版本。 二.算法思想(1)间隔 Gap计算 : 设一组无序数列的长度为 len ,Gap也就是说这组数据分几组。设gap[] = {gap1,gap2,gap….,1}gap1 = len /2 ; 求整gap2 = gap1 /2 ; 继续往后...

2018-12-27 16:43:49 320

原创 排序3:简单选择排序

一,概述(1)简单选择排序是一种选择排序。(2)选择排序:每趟从待排序的记录中选出关键字最小的记录,与当前位置的数值进行交换,直到所有数据有序排列完成。 二。算法思想 (1)从待排序序列中,找到关键字最小的元素;(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;(3)从余下的N - 1个元素中,找出关键字最小的元素,重复(1),(2)步,到结束...

2018-12-27 12:14:14 236

原创 排序2:直接插入排序

一.概述1.插入排序: 每一趟,将待排序的序列记录,根据待排序关键字大小插入到有序队列合适位置当中,直到所有数列按照大小要求完成。2.直接插入排序:最简单的一种插入排序,每次将待排序的的数字直接插入到整个序列的合适位置当中。二.算法思想将第 i个记录插入到前面 i-1(此处设位 j )个已排序的记录中 的记录中 ,将 i 记录的关键字 temp,顺次与前面 ,已经记录的关键字比 较...

2018-12-27 11:09:33 726

原创 排序1: 冒泡排序及其优化

一. 概述(1)冒泡 排序是一种 排序是一种 排序是一种 交换 排序。   交换排序:数据两两比较,交换不满足次序要求的数据,直到整组数据都满足排序要求。 二.算法思想    假设有一个大小为 N 的无序序列。以升序冒泡排序为例,冒泡排序就是要每趟排序过程中通过两两比较相邻元素,将小的数字放到前面,大的数字放在后面。     假设有一个无序序列: 4,3,1,2,5 ...

2018-12-26 19:32:34 213

原创 数据结构:顺序表的基本操作: 增 删 查 改 扩容 动态分配内存

顺序表:          线性表  /*From:mohicanData:2018/12/26*//*SXList.h*/#include<stdio.h>typedef struct SXList{ int *elem; //指针 int usedsize; //有效元素个数 int length; //总长度}SXList,*PList;...

2018-12-26 12:26:11 322

原创 剑指offer(四) 字符串 : 反转字符串

题目:     汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。 思路:  设反转前pos 位 字母 ,则如下图所示  #include<io...

2018-12-25 23:30:39 1369 1

原创 Linux: xshell下 创建新的用户 设置密码 设置root权限

(1)创建新用户     [root@tyf ~]# useradd XXX // XXX 是需要创建的用户名(2)设置密码 [root@tyf ~]# passwd XXX //XXX是用户名 (3)输入需要设置的密码 ,输入两次 。  (4)  输入指令,查看知否创建 ls /home(5)修改权限,将root权限赋给用户      ...

2018-12-25 23:13:42 12613 1

原创 风吹日晒脑瓜痛

随着年龄的增长越来越感觉身体的重要了。但是因为学习,生活的原因,时常会熬夜,尤其是进入了大三以来,几乎没有十二点之前睡过,总结一下发现,还是自己工作效率太低导致的。每天的安排其实也是需要调度的,应该把最简单的,最必要的先完成。晚睡不如第二天早起,但是我强迫症太严重了,当天不完成,总是觉得不舒服。这一点看似严格,其实有的时候是需要灵活变动的。    除了有时候半夜起床上厕所,听着...

2018-12-11 17:38:18 134 1

原创 Linux: ifstat 的安装 以及使用

(一)安装(1)切换管理权限supassword (2)wget下载安装包wget http://distfiles.macports.org/ifstat/ifstat-1.1.tar.gz(3) tar  处理压缩包tar xzvf ifstat-1.1.tar.gz (4)打开目录  cd ifstat-1.1cd ifstat-1...

2018-12-01 12:46:02 1204

原创 offer(一): 俄罗斯方块成功次数输出 C++实现

题目链接:https://www.nowcoder.com/test/question/done?tid=20189002&qid=224352题目描述:小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都...

2018-11-26 21:38:20 138

原创 剑指offer(四):递归题目 字符串字串 字符串全排列 查找输出素数及其因子 有一个遗留问题

1.字符串的顺序子串(这个比较低),杂序的还没想到:a ab ac abc b bc c#空字串 示例:abc的顺序子串:a ab abc | b bc | C思路:定义两个下标我状语从句:常Ĵ     (1)I指向初始位置,J指向末位位置,遍历一次ABC,输出,将我指针移动,一次输出,(2)递归调用i + 1号位置如图:void Funstr(char *str...

2018-11-25 19:19:02 1466

原创 Github使用: 无法打开github网页

打不开github上网页,试了很多方法都没有,先写一下常见的几种方法:(但是对我都没啥用)(一)进入Window下目录:C:\ Windows \ System32 \ drivers \ etc    NodePad ++打开hosts文件,如果提示没有权限,就使用启用管理员权限打开,在hosts文档末位追加:#github 192.30.253.113 github.com 19...

2018-11-25 15:49:52 27030 15

原创 C++ :四种强制类型转换方式 以及const常量折叠

 遇到的几个问题:(1)reinterept_cast:Int和float不能转换  :传引用(2)cons_cast:去掉const属性,在编译阶段 const int num = 12;   *c++里的常量折叠(或者常量替换)是将const常量放在符号表中,给其分配内存,    但实际读取时类似宏替换。编译器直接进行替换优化。*/C++中是占空间的。不过编译器也可...

2018-11-20 23:40:10 496

原创 C++: 继承和多态(二)虚函数

C++多态   多态与虚函数表  虚析构函数  纯虚函数    【问题】构造函数或析构函数内部不能调用纯虚函数 (注意不是虚函数) 【问题】inline能不能是虚函数 【问题】static能不能是虚函数 【问题】构造/析构能不能是虚函数 【问题】派生类的析构函数无法调用 ?? 怎么处理  ...

2018-11-12 20:15:18 114

原创 C++: 继承和多态(一)三种继承方式与权限

继承在C++中,我们常要对某个函数进行多次复用,例如: 信息管理系统中,对于教师、学生、教务人员等"类"而言,有部分信息是通用的:姓名,性别,年龄,联系方式等。如果为每一种角色都编写一个"类",会有不少重复的代码,造成效率上的浪费。         C++ 的“继承”机制就能避免上述浪费,减少代码复用在 C++ 中,从一个类派生出另一个类的写法如下class  派生类名: 继承方式...

2018-11-12 20:10:16 452

原创 Linux高性能服务器编程 I/O复用 之 select poll epoll

select的系统调用poll的系统调用 epoll的系统调用 【问题】 三者的区别【问题】ET模式和LT模式【问题】网络信息统计工具之  netstat

2018-11-10 10:34:19 177

原创 C和C++的区别:new /delete 和 malloc/free

幕布分享: https://mubu.com/doc/vQfZHGsDG0动态分配内存: 在程序运行中进行的,而不是在编译就确定的new 堆上分配内存(1) 开辟T字节大小空间: Tp =new T; size: sizeof(T)     T 是任意类型名,p 是类型为 T 的指针 ,起始地址赋给p(2) 动态分配任意大小数组: T b = new T[ N ] size: ...

2018-11-09 14:51:25 182

原创 C和C++的区别: inline 关键字 内联函数

引入inline原因  : 较好地解决了函数调用开销的问题。inlne 在定义函数时,在返回值类型前面加上 inline 关键字使用条件:代码数目较少,且多次调用 空间换时间 调用内联函数的语句前必须【已经出现内联函数的定义】(即整个数体) 使用函数能够避免将相同代码重写多次的麻烦,还能减少可执行程序的体积,【但也会带来程序运行时间上的开销】例: Inline与普通函数的...

2018-11-06 23:27:30 373

原创 C和C++的区别: 带默认值的参数

声明一个函数时,可以为函数的参数指定默认值当调用有默认参数值的函数时,可以不写出参数,这时就相当于以默认值作为参数调用该函数。 

2018-11-06 23:26:58 629

原创 进程虚拟地址空间

 个人幕布文档:https://mubu.com/doc/vQfZHGsDG0 进程虚拟地址空间的引入  1.程序与进程的区别程序: 静态 预先编译好的指令和数据的集合 的一个文件 #菜谱 进程:动态 程序运行的过程 #炒菜的过程 2.虚拟地址空间: 程序运行后拥有自己独立的虚拟空间大小: CPU位数决定 指针大小与虚拟地址空间位数相同 32 位平台 *p 32位==4b...

2018-11-06 23:19:45 4255

原创 模板 模板容器的实现

template<typename T>class Vector{public: Vector(int _size = 10):num(0),resize(_size) { ptr = new T[resize]; } ~Vector() { delete [] ptr; ptr = NULL; } Vector(const Vector&s...

2018-11-05 23:21:37 518

原创 运算符重载 : Cstring实现

class Cstring {public: Cstring(char*ptr=NULL) { if(cptr == NULL) { cptr = new char[1]; cptr[0] = 0; } else { cptr = new char[strlen(ptr)+1]; strcpy(cptr,ptr); } } ~Cstr...

2018-11-05 23:18:55 253

原创 海量数据处理(一) 求top k问题

优先级队列给一组海量数据,限制内存为2M,,找出里面最大/小的Tokp k int main(){ vector<int> vec; srand(time(NULL)); for(int i =0;i<1000000;i++) { vec.push_back(rand()%1000000+1); } //默认是一个大根对 priority_que...

2018-10-27 15:25:48 321

原创 动态分配二维数组 new / vector

new  vector

2018-10-27 15:20:29 400 1

原创 剑指offer(三):二维数组中的查找 递增数组 C 和C++实现

题目:在一个递增二维数组中查找是否含有某元素在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:1. 将二维数组传入找到函数中3.从二维数组传入右上角的数字开始查找:(1)若右上角数字== num,返回true,由于数组的递增特性(2)若右上角数字<nu...

2018-10-12 10:12:31 942

原创 剑指offer(二):字符串的全排列 字符串 C语言

题目:实现字符串的全排列输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。思路:  1.先求出所有可以出现在第一个位置的字符2.固定第一个字符,求后面所有字符的排列。  这个时候我们仍把后面的所有字符分为两部分:后面的字符的第一个字符,以及这个字符之后的所...

2018-09-27 00:22:40 1254 1

原创 数据结构(一):顺序表的基本操作 C语言

顺序表 头文件: Sqlist.h#include<stdio.h>#include<stdlib.h>#define SIZE 15#pragma oncetypedef struct Sqlist{ int elem[SIZE]; int usedsize; //有效长度} Sqlist, *Psqlist;void InitSqli...

2018-09-26 00:46:12 955 1

原创 剑指offer(一):替换空格 字符串 C语言

题目:    替换空格请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路1:建立两个数组 ,一个存放原来的,一个存放替换后的  时间复杂度过高O(n^2) ,代码如下:#include<stdio.h>#include<string.h>#incl...

2018-09-26 00:36:17 594 2

原创 C语言库函数实现 XtoX系列: itoa atoi atof

1.itoa  功能:把整型转换为字符串 int to string头文件: stdlib.h函数原型: char*itoa(int value,char*string,int radix);函数实现:#include<stdio.h>#include<stdlib.h>#include<assert.h>void itoa_1(int num,char ...

2018-05-03 21:30:19 371

原创 Mohican_4/22 结构体 typedef 枚举 联合 位段 内存对齐

一.结构体struct Test{ int a; int b; int c;};关键字 struct  ,表示其是一个结构体,后面是一个可选的标记(Test)strcut Test Codestrcut Test 的作用类似于 int 或float的 声明。a.在定义之后跟变量名,声明结构的过程和定义结构变量的过程可以使用合并成一步struct Test{ int a; int...

2018-04-22 19:45:48 221

原创 Mohican_4/17 用C语言实现大小端模式 的判断

大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端模式:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。方法一:void duan_1...

2018-04-18 18:30:45 146

原创 Mohican_4/17 malloc 与realloc 的扩展情况 以及内部重分配内存

一.mallocvoid* malloc(unsigned size); void* calloc(size_t nelem, size_t elsize); 和void* realloc(void* ptr, unsigned newsize);都在stdlib.h函数库内,是C语言的标准内存分配函数。二.reallocvoid * realloc ( void * ptr, size_t si...

2018-04-18 17:37:34 205

原创 Mohican_4/15 C语言 动态分配内存的一些问题 malloc calloc realloc

一.malloc   calloc   realloc 区别以及工作模式?1.C语言跟内存分配方式Ø  从静态存储区域分配内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.Ø  在栈上创建   在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内...

2018-04-18 17:35:05 154

原创 Mohican_4/15 C语言字符串 关于 i++和 ++i 的一些问题 (需补充)

 #include <stdio.h>#include <string.h>#include <stdlib.h>void show_i(int i){ printf("%d %d\n",i++,i++);// i++ printf("%d %d\n",++i,++i);  //++i直接显示最终结果} int main(){ show_...

2018-04-18 17:30:25 134

原创 Mohican_4/14 C语言字符串 朴素(暴力)匹配 strstr strcmp strchr

#include<stdio.h>#include<assert.h>#include<stdlib.h>#include<string.h>int My_strstr(const char * str, const char * sub){ assert(*str !=NULL); assert(*sub !=NULL); int...

2018-04-18 17:24:38 360 2

原创 Mohican_4/9 可变参数列表 P实现rintf函数

#include<stdio.h>#include<stdarg.h>#include<stdlib.h>void Printf(char *fmt,...)//...表示可变参数(多个可变参数组成一个列表,后面有专门的指针指向他),不限定个数和类型, { va_list arg; //初始化指向可变参数列表的指针 va_sta...

2018-04-18 17:17:09 151

原创 Mohican_4/6 C语言 移位运算 代码#FloatToInt

注意  :第一种方法不可取,因为与FloatToInt的内部原理有差距 但是表面可以完成FloatToInt的基本功能第二种方法可取  使用知识点位段操作#include <stdio.h>#include <math.h>/*********************1.使用c语言标准库中的floor和ceil函数来进行向下或者向上取整***************...

2018-04-18 17:15:09 307

原创 Mohican_4/1 C语言 switch 跳转表 直通性 与if else 比较

switchswitch语句可以根据一个整数索引值进行多重分支。处理具有多种可能结果的测试时,这种语句特别有用。1.switch跳转表  跳转表是一个数组,表项i是一个代码段的地址,这个代码段实现当switch索引值等于i时程序应该执行的动作。  程序代码用于索引值来执行一个跳转表内的数组引用,确定跳转指令的目标。  和使用一组很长的if-else相比,使用跳转表的优点是执行switch语句的时间...

2018-04-02 00:36:25 334

原创 Mohican_4/1 C语言 移位运算基本操作 计算二进制的个数

基本知识:1.左移运算符:  x<<k   x向左移动k位位移运算 从左至右可结合  x<<j<<k等价于(x<<j)<<k右移运算符:   x>>k   x向右移动k位 逻辑右移和算术右移。逻辑右移在左端补k个0;算术右移是在左端补k个最高有效位:如果符号为位1,则移入的位均为1;若符号位为0,则移入位均为0.     2....

2018-04-02 00:11:16 234

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除