askunix

askunix@163.com

【排序算法】快速排序(可视化描述,实现方法,代码优化)

这是快排的可视化动态图描述: 该方法的基本思想是: (1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 “基准”; (2)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小,在基准右边的元素都比基准大; (3)递归地对两个序列进行快...

2018-07-17 16:40:30

阅读数 1968

评论数 0

【面试题】字符串中第一个只出现一次的字符

问题描述: 在字符串中找出第一个只出现一次的字符,例如字符串 str = “abcdabcdef “,那么对于这个字符串,第一个只出现一次的字符就是 e 。 首先这道题可以考虑遍历:从第一个字符开始,挨个与后面字符作比较,如果有重复的字符,就跳出本次循环,再从第二个字符开始往后比较,类...

2018-07-15 14:38:05

阅读数 1248

评论数 0

HTTP协议的长连接与短连接

点击查看原文:查看原文 1、HTTP协议与TCP协议的关系?? HTTP的长连接和短连接实质上是TCP的长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP层:解决网络路由和寻址问题 TCP协议:解决如何在IP层之上可靠的传输数据报,并在...

2018-07-15 11:38:00

阅读数 1520

评论数 0

普通版 / 多进程 / 多线程 --- TCP服务器实现原理详解

UDP服务器请查看: 简单的UDP服务器实现 代码注释很详细,不了解的可以看代码,基本一半以上都是注释。 tcp_server.c (普通版) #include<stdio.h> #include<sys/sock...

2018-07-13 19:19:15

阅读数 1173

评论数 0

TCP连接的建立和关闭过程及相关面试问题详解(三次握手&四次挥手&面试问题)

三次握手、四次挥手问题是面试中一定会问到的,包括在《高质量C/C++编程》一书中也有类似的习题。(浏览器输入www.baidu.com回车后发生了什么?)这篇blog就TCP连接的建立和关闭过程及相关面试问题做一个详解,如有错误,望指正。 如果对TCP还不了解,可以先阅读这篇文章: 三...

2018-07-03 19:45:59

阅读数 1035

评论数 0

【栈的应用】迷宫算法(栈和回溯思想)

人生,就像一个很大的栈演变。出生时赤条条地来到这个世界,慢慢地长大,渐渐地变老,最终还得赤条条地离开世间。 思路分析: 上面是一个迷宫地图,在地图上,0 代表墙,1 代表通路。 迷宫是回溯法和栈的综合应用。 下面给出完整的思路和寻路算法: 这里我们只研究一种情况:...

2018-07-31 00:35:04

阅读数 836

评论数 0

结构体 struct 和类 class 的比较

C的结构体和C++结构体的区别 1、组成不同 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。 2、权限不同 C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protec...

2018-07-30 14:54:28

阅读数 733

评论数 0

C++类的六个默认成员函数

类的六个默认成员函数: 1、构造函数 概念: (1)构造函数是用于构造新对象,并将初始值赋给对象的数据成员。 (2)类型转化,适用于单参的构造函数。 用explicit修饰构造函数,抑制由构造函数定义的隐式转换,erplicit关键字类内部的构建声明上,在类的定义体外部的定义...

2018-07-30 12:41:10

阅读数 766

评论数 0

【排序算法】直接插入排序 & 折半插入排序(二分法插入排序)

排序算法的性能评估: 一个算法执行时间是衡量算法好坏的重要参数。排序算法的时间开销可用算法中的数据交换次数,和数据移动次数来衡量。 直接插入排序算法 算法思想: 当插入第 i 个元素时,前面的 i-1 个元素已经有序。其实直接插入排序就是拿一个数,放到前面有序的数中就可以了。具体怎...

2018-07-30 00:30:59

阅读数 905

评论数 0

【STL】算法使用篇

一、概述 STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中的每一个元素调用指定的函数,stable_sort以你所指定的规则对序列进行稳定性排序等等。这样一来,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需...

2018-07-26 17:36:24

阅读数 260

评论数 0

【笔试题】奶牛等分苹果

来源牛客网:链接 题目描述 n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。 输入描述: 每个输入包含一...

2018-07-24 19:34:59

阅读数 859

评论数 0

[笔试题]Fibonacci数与给定目标数之间的最小步数

来源:牛客网点击进入 题目描述 Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在F...

2018-07-24 17:53:39

阅读数 941

评论数 0

C语言的内存管理机制

内存资源是非常有限的。尤其对于移动端开发者来说,硬件资源的限制使得其在程序设计中首要考虑的问题就是如何有效地管理内存资源。本文是作者在学习C语言内存管理的过程中做的一个总结。 变量概念: 全局变量(外部变量):出现在代码块{}之外的变量就是全局变量。 局部变量(自动变量):一般情况下,代...

2018-07-22 15:39:30

阅读数 1694

评论数 0

模拟实现库函数memcpy、memmove

模拟库函数memcpy 函数原型: void *memcpy( void *dest, const void *src, size_t count ); 函数功能: memcpy函数是从源字符串中取前count个地址字符放入到目标字符串前count个地址位置...

2018-07-22 13:45:28

阅读数 990

评论数 0

从斐波那契数列开始了解递归和尾递归的区别

递归函数是指一些会在函数内调用自己的函数,如果在递归函数中,递归调用返回的结果总被直接返回,则称为尾部递归。尾部递归的函数有助将算法转化成函数编程语言,而且从编译器角度来说,亦容易优化成为普通循环。这是因为从电脑的基本面来说,所有的循环都是利用重复移跳到代码的开头来实现的。如果有尾部归递,就只需要...

2018-07-17 21:25:08

阅读数 1120

评论数 0

贪心算法解决问题

描述: 贪心算法也叫作贪婪算法,是指在求解问题时总做出在当前看来最好的选择,就是不从整体考虑问题,仅在某种意义上的局部最优解。虽然不是所有问题都能得到最优解,但是面对范围广泛的许多问题时,能产生整体最优解或者是整体最优解的近似值。 贪心算法思路: 从问题的某一个初始解出发,逐步逼近给定的目标...

2018-07-15 23:43:32

阅读数 1742

评论数 0

哲学家就餐问题学习笔记

场景:5个哲学家,5根筷子,5盘意大利面(意大利面很滑,需要同时两根筷子才能夹起来)大家围绕桌子,进行思考与进食的活到,如下图所示。 哲学家的活动描述: 哲学家除了吃面,还要思考,所以要么放下左右手筷子进行思考,要么拿起两根筷子开始吃饭(哲学家只能拿自己两侧的筷子吃面,不考虑卫生问题...

2018-07-15 20:49:10

阅读数 2013

评论数 0

银行家算法学习笔记

要想说银行家,首先得说死锁问题,因为银行家算法就是为了死锁避免提出的。 问什么叫做银行家算法呢?因为这套算法适用于银行贷款业务,适用于银行家的决策。 一个银行家共有20亿财产 第一个开发商:已贷款15亿,资金紧张还需3亿。 第二个开发商:已贷款5亿,运转良好能收回。 第...

2018-07-15 20:15:20

阅读数 1113

评论数 0

路由表生成算法

文章转载 强烈推荐参考:路由表算法 (距离向量算法、LS算法、Dijkstra算法) 路由(名词)数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。 路由(动词)某个路由节点为数据报选择投递方向的选路过程。 路由节点一个具有路由能力的主机或路由器,它维护一张路由表,通过查询...

2018-07-14 17:00:39

阅读数 956

评论数 0

模拟库函数 atoi 和 itoa

atoi 原型: int atoi( const char *string ); atio()函数传入一个 char *,返回 int 。 int my_atoi(const char *str) { assert(str); int num = 0; int ...

2018-07-14 16:31:11

阅读数 932

评论数 0

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