C/C++
文章平均质量分 94
苦_咖啡
这个作者很懒,什么都没留下…
展开
-
时间片
时间片即CPU分配给各个程序的时间,每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程转载 2014-01-15 16:05:55 · 1092 阅读 · 0 评论 -
【算法导论】十一章散列表11.1-4大数组实现直接寻址方式的字典操作
算法导论第三版,第十一章散列表 习题11.1-4 大数组实现直接寻址方式的字典操作。原创 2015-01-05 16:33:54 · 1222 阅读 · 0 评论 -
【算法导论】10.2不带哨兵节点和带哨兵节点的双向链表
带哨兵和不带哨兵的双向链表,欢迎拍砖!原创 2015-01-04 11:44:06 · 3892 阅读 · 1 评论 -
【算法导论】线性时间排序之 决策树&计数排序
本文讲述的决策树和计数排序的基本原理和实现方法,欢迎拍砖!原创 2014-12-24 15:23:38 · 2278 阅读 · 0 评论 -
【算法导论】归并排序
归并排序算法分析,欢迎拍砖!原创 2014-12-02 21:42:55 · 2037 阅读 · 1 评论 -
【算法导论】快速排序
搞这一行还是始终绕不过数据结构算法这一个坎,自己不是科班出身,还是脚踏实地一步一步的开始学原创 2014-11-19 21:29:00 · 1187 阅读 · 1 评论 -
【算法导论】中位数和顺序统计量之选择算法
本文阐述了如何使用期望和线性时间的选择算法求得第i顺序统计量,欢迎拍砖!原创 2014-12-30 16:10:10 · 2831 阅读 · 0 评论 -
【算法导论】堆排序
算法基础之堆排序,欢迎拍砖!原创 2014-12-16 10:11:01 · 1449 阅读 · 0 评论 -
【算法导论】插入排序
算法入门之插入排序原创 2014-11-30 11:28:44 · 1700 阅读 · 1 评论 -
学习JNI--Android下使用JNI调用C
JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。原创 2014-10-23 17:28:55 · 1903 阅读 · 0 评论 -
解决NDK开发中Eclipse报错“Unresolved inclusion jni.h”的最终方法
在做NDK开发过程中有时候在eclipse里会遇到其无法处理inclusion导致symbol显示错误,网上有许多方法可以解决类似“Unresolved inclusion jni.h” 错误的方法,包括include path等方法,不过对我都不管用。最终的解决办法就是初始化eclipse对该project的native support:1. 在eclip转载 2014-10-22 10:22:01 · 1097 阅读 · 0 评论 -
C++内存逻辑区域划分方式介绍
C++编程语言是一门比较高深的计算机应用语言。它的很多功能都需要我们在不断的学习与实践过程中去探索。比如C++内存相关内容,就是其中一个重要的知识点。C++内存逻辑区域总共被分为三种:堆、栈和静态存储区。我们称位于它们之中的对象分别为堆对象,栈对象以及静态对象。C++类型转换基本概念浅谈C++编译器命令列表总结C++时间基本概念分享C++计时具体操作方法详解C++预转载 2014-11-05 09:30:56 · 1139 阅读 · 0 评论 -
每天一道ACM(1003)--斐波那契数列
每天一道ACM(1003)--斐波那契数列原创 2014-12-02 23:43:18 · 2213 阅读 · 0 评论 -
【算法导论】选择排序
#include #define MAX_SIZE 10#define MAX_INDEX MAX_SIZE-1typedef int T;using namespace std;void swap(T& a, T& b);void select_sort(T* a, const int& len);void printArr(const T* a, const int& l原创 2014-12-01 21:14:58 · 845 阅读 · 0 评论 -
C++ Primer】两个类相互包含的求解策略
一,问题描述 A类包含B类的实例,而B类也包含A类的实例 二,求解策略 1)错误的解法 A文件包含B,而B文件又包含A文件,这样就形成死循环[html] view plaincopy#include "B.h" class A转载 2015-01-05 16:14:34 · 706 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说转载 2015-01-04 15:22:11 · 653 阅读 · 0 评论 -
【微软100题】001把二元查找树转变成排序的双向链表(树)
/** * 题目: * 1.把二元查找树转变成排序的双向链表(树) 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / / 6 14 / / / / 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 *//* * 想法:如果采用中序遍历,那么就是从小到大排序的输出,原创 2015-01-16 17:00:18 · 749 阅读 · 0 评论 -
C/C++产生随机数
C/C++产生随机数用到两个函数rand() 和 srand()一. 不指定范围产生随机数 用到函数rand(),函数原型为int rand(),无参数。此时会产生一个介于0~RAND_MAX间的整数。RAND_MAX的大小可以查看,在include文件夹(linux在usr目录、windows在安装目录)的stdlib.h可以看到,linux下其值为2147483647(转载 2014-12-30 18:53:28 · 635 阅读 · 0 评论 -
【编程之美】1.1让cpu占用率曲线听你指挥
尝试了书中的几种方式,发现都不明显,只有下面这种方法,而且要把时间片调到7ms的时候,才大致是在百分之50:/* * 让cpu占用率曲线听你指挥 * * 写一个程序,让用户来决定windows任务管理器的cpu占用率,程序越精简越好,计算机语言不限。实现下面三种情况 * * 1、cpu的占用率固定在50%,为一条直线 * 2、cpu的占用率为一条直线,具体占用率由命令行参数原创 2015-01-17 10:11:44 · 895 阅读 · 0 评论 -
c++ assert() 使用方法
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#i转载 2015-01-16 21:05:43 · 7256 阅读 · 0 评论 -
【算法导论】红黑树详解之一(插入)
红黑树是建立在二叉查找树的基础之上的,关于二叉查找树可以参看【算法导论】二叉搜索树的插入和删除和【算法导论】二叉树的前中后序非递归遍历实现。对于高度为h的二叉查找树而言,它的SEARCH、INSERT、DELETE、MINIMUM、MAXIMUM等操作的时间复杂度均为O(h)。所以在二叉查找树的高度较高时,上述操作会比较费时,而红黑树就可以解决这种问题。原创 2015-01-14 11:11:47 · 15854 阅读 · 8 评论 -
【算法导论】二叉搜索树的插入和删除
阐述二叉搜索树的插入和删除节点操作。原创 2015-01-11 11:47:20 · 3210 阅读 · 0 评论 -
【算法导论】二叉树的前中后序非递归遍历实现
二叉树的非递归遍历原创 2015-01-08 20:47:47 · 3939 阅读 · 1 评论 -
【算法导论】10.1-5单数组实现双端队列
算法导论习题,单数组实现双端队列,欢迎拍砖!原创 2015-01-02 22:47:09 · 2139 阅读 · 0 评论 -
二维数组与指针
怎样理解 a[0]与*(a+0)等价,二维数组元素a[i][j]可表示成*(*(a+i)+j), 不理解*(a+i)这里。a是数组名,是一个指针常量,指向的是数组的首地址~~~所以a[0]*(a+0)..[]运算符就是取偏移量,而*可以理解为解引用~就是取地址上的值~~二维数组则有首地址,行地址,行首地址的分别~~a[i][j]~~不用语言会有不同的解释,大部分都是行优先~~~转载 2014-11-04 20:44:44 · 675 阅读 · 0 评论 -
对ACM初学者的意见及推荐ACMer看的书
一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。下面给个计划练练: 第一阶段:练经典常用算法,下面的每个算法打上十到二十遍,同时自己精简代码。因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短路(Floyd、Dijstra,转载 2014-10-28 18:48:38 · 2151 阅读 · 0 评论 -
判断两棵树是否相等
题目:请实现两棵树是否相等的比较,相等返回,否则返回其他值,并说明算法复杂度。数据结构为:[cpp] view plaincopytypedef struct_TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild; }TreeNo转载 2014-10-27 00:24:23 · 1214 阅读 · 0 评论 -
链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)
链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)以下排序算法的正确性都可以在LeetCode的链表排序这一题检测。本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针)struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {转载 2014-04-15 17:42:36 · 1232 阅读 · 0 评论 -
继承中的构造函数调用顺序
调用派生类的构造函数之前先调用基类的构造函数,析构函数则相反。因为派生类需要用到基类的成员,所以必须先有基类,再有派生类。 C++语法规定:如果类没有显示定义构造函数,则编译器提供一个默认构造函数(不带参数,仅创建对象,不初始化)。如果类显示定义了构造函数,编译器一律不提供默认构造函数。即如果一个类定义了一个带参数的构造函数,还想要无参数的构造函数,则必须自己定义。 例如:转载 2014-04-16 21:44:14 · 826 阅读 · 0 评论 -
稳定排序和不稳定排序
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能转载 2014-04-20 21:00:50 · 540 阅读 · 0 评论 -
解决函数中返回局部指针变量的问题,加深理解《堆和栈》问题。
刚看了C专家编程这本书,感觉下面问题,对于每一个入门的程序员都会遇到,现总结如下,希望能对大家有所帮助,同时如果有那些地方表述错误,请大家指出,共同学习。。。。。先分享网上的一遍文章,以帮助大家理解:《 堆和栈的区别》 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存转载 2014-01-14 16:46:34 · 1279 阅读 · 0 评论 -
关于局部变量的指针,栈,和栈的释放的几个例子
看几个例子一个是经典的1+2=65534:代码如下#include #include unsigned short *Sum( unsigned char a,unsigned char b) { unsigned short S=0; S=a+b; return &S; } int main() { unsigned short *p=NULL; unsig原创 2014-01-14 19:22:09 · 2482 阅读 · 0 评论 -
关于多态里父类的析构函数造成子类内存泄露的问题
最近在学c++,学到多态,发现一个有趣的问题,先来看一段代码:#include using namespace std;class Database{ public: virtual void connect(){cout << "Database connected!" << endl;} virtual void query()const{c原创 2014-03-18 17:42:09 · 1404 阅读 · 0 评论 -
我们什么时候应该使用动态内存
我讲解一下c语言中动态分配内存的函数,可能有些初学c语言的人不免要问了:我们为什么要通过函数来实现动态分配内存呢?系统难道不是会自动分配内存吗??既然有人会问这样的问题,那么我在这里好好的讲解一下吧!首先让我们熟悉一下计算机的内存吧!在计算机的系统中有四个内存区域:1)栈:在栈里面储存一些我们定义的局部变量以及形参(形式参数);2)字符常量区:主要是储存一些字符常量,比如:char *p_原创 2014-03-18 19:04:04 · 792 阅读 · 0 评论 -
linux和windows下,C/C++的sleep函数
简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 在VC中使用带上头文件 #include 在gcc编译器中,使用的头文件因gcc版本的不同而不同linux系统需要添加的头文件 #include 注意 :转载 2014-03-22 10:34:44 · 963 阅读 · 0 评论 -
strcpy函数返回值的作用
字符串拷贝函数strcpy的原型:char *strcpy(char *strDest,const char *strSrc);strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举,可以获得如下灵活性: char str[20]; int length = strlen( strcpy(st转载 2014-04-03 12:51:13 · 2788 阅读 · 0 评论 -
String原型
class String{public:String(const char *str = NULL); // 普通构造 String(const String &other); // 拷贝构造函数~ String(void); // 析构函数String & operate =(const String &other); // 赋值函数private:char *m原创 2014-04-04 10:55:49 · 583 阅读 · 0 评论 -
C++中string erase函数的使用(转载)
erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator position );(3)iterator erase ( iterator first, iterator last );也就是说有三种用法:(1)erase(pos,n); 删除从pos开始的n个字符,比转载 2014-04-12 21:23:21 · 649 阅读 · 0 评论 -
malloc函数的一种简单的原理性实现
malloc()是 C 语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为 size 的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针malloc()工作机制malloc 函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用 malloc 函数时,它沿连接表寻找一个大到足以满足用转载 2014-04-04 11:35:13 · 579 阅读 · 0 评论 -
怎样new一个二维数组?
方法之一: int **p; p=new int*[n]; for(i=0;i p[n]=new int[n]; 的方式来创建二位数组 这种方式虽然在用法上和静态2为数组一样,但是物理结构缺完全不同 对于int a[3][3],数组在内存中得分不是连续的 即: [转载 2014-03-30 15:47:03 · 752 阅读 · 0 评论