c
nvnnv
这个作者很懒,什么都没留下…
展开
-
C++实现之归并排序
说说思路归并排序实际上就是分治法,插句题外话,归并排序比快排、堆排序的实现难度微大。大体思路就是将待排数列分组,一分二二分四…….说白了就是把数列建成树,直到每个节点分不下为止(剩一个数,就不能再分了)。然后回溯,回溯的同时排序,也就是说,通过整个孩子节点的数列对父节点的数列进行排序,比如: 数列:3 1 9 7 建树如下 回溯的时候,从叶子节点开始,将左右孩子的数列按顺序合并(从小到大)原创 2016-04-05 21:23:51 · 1687 阅读 · 0 评论 -
两个栈实现队列
看面经的时候发现,有道两个栈实现队列的题目,我的第一反应就是,这就是多此一举。恩,这就是考对栈和队列的熟悉程度的。 栈和队列的操作都是常数级的,所以先入为主,两个栈实现的队列也应该是常数级的,可是想来想去发现实现不了(也可能是我没想到=。=),目前的方法就是来回倒栈,时间复杂度就是长度。 现用C简单的写了一下,数组实现的,是那个意思就行了。#include<cstdio> #include<io原创 2016-03-28 17:39:22 · 253 阅读 · 0 评论 -
快速排序算法(C)
sort快排函数的基本版,效率n*logn,快排的完全版就是在递归之中夹杂对序列的预判断,最优的选择排序方法,快速排序算法只是其中之一。 简单的说明一下快速排序的思想,对于一个数列,首先选择一个基数(x),进行第一次排序,把比x 小的放在x左边,大的放右边(默认从小到大)。 例如 : 8 4 5 7 6 9 2 1 3 0, 选择基数8 那么第一次排序的结果是这原创 2016-03-01 16:09:05 · 300 阅读 · 0 评论 -
Webbench实现
// socket.cpp #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <string.h> #include <stdio.h> #include <stdlib.h>/* * 函数作用:连接指定的主机 */ extern int my_so原创 2017-08-13 19:51:02 · 883 阅读 · 1 评论 -
分享一个方法:如何计算浮点数由多少位数字组成?
如何计算一个浮点数由多少数字组成? 想了好久,没想出答案,结果听门外者(完全不懂编程)说了一个思路,瞬间开朗。unsigned int getIntegerLength(long long l) { long long temp = 10l; unsigned int len = 1; while (l/temp != 0) { temp = tem原创 2017-09-03 20:44:54 · 1004 阅读 · 0 评论 -
子序列求最大和
给一个数组,求子序列的最大和 开始是这样做的。 int maxSubArray(vector<int>& nums) { int len = nums.size(); int m = nums[0]; for (int i = 0; i < len; ++i) { dp[i][i] = nums[i];原创 2017-09-24 22:14:34 · 315 阅读 · 0 评论 -
用C写的json解析工具(逐步完善中)
首先是定义json结构和接口#ifndef CJSON_CJSON_H #define CJSON_CJSON_H#include <basetsd.h>typedef enum type { STRING_1, OBJECT_1, BOOL_1, ARRAY_1, INTEGER_1, DOUBLE_1 }Type;typedef struct cj原创 2017-09-24 22:22:12 · 486 阅读 · 0 评论 -
关于锁的一点思考
无论是互斥量、信号量、对象锁、线程锁、进程锁等等,简略的说他们都一样,都是把某种东西锁住(抽象了),可能他们的级别不一样、使用的位置不一样。 对于我使用过的语言,包括c++、java、python、c,语言体系不一样,但使用锁的思考可能殊途同归。 c++/c: 在多线程、多进程情况下,我会首先思考当前使用的对象/指针/方法,无论管它叫什么都好。它会在哪里(进程空间的位置),要去哪里,去了干什...原创 2018-11-22 11:14:39 · 239 阅读 · 0 评论