- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 冒泡排序和他的优化
冒泡排序是常常使用的排序,面试中也常常用到。他的特点是:1.简单 冒泡排序的逻辑是相邻元素进行比较和交换,经过一轮排序至少可以确定一个有序的元素。那么可以得出结论:排序n个元素,需要n-1轮排序。for (x =0 ;x 经过一轮排序,可以把最大或者最小的元素移动到数组的一边,下一轮在排序时,减少排序元素的数目。for (y = len-1; y > x; --y)
2016-03-20 15:46:57
324
转载 select poll epoll的io模型
针对IO,总是涉及到阻塞、非阻塞、异步、同步以及select/poll和epoll的一些描述,那么这些东西到底是什么,有什么差异? 一般来讲一个IO分为两个阶段: 等待数据到达把数据从内核空间拷贝到用户空间 现在假设一个进程/线程A,试图进行一次IO操作。 A发出IO请求,两种情况: 1)立即返回 2)由于数据未准
2016-02-21 09:42:09
306
原创 异步与同步 阻塞和非阻塞
异步与同步 阻塞和非阻塞 总是让人觉得难以理解实际上常用的函数是都是同步的,很多Io函数也是默认的阻塞的。同步是最常见的,就是一步一步的执行函数,执行完返回。他简单,你不需要额外的去考虑,这是很自然的事情。阻塞是说当文件描述符不可用的时候,就等待,等到他可用。对于一个函数来说,非阻塞时可以设置的,但是对于同步来说,好像没有什么可以设置的。同步是简单、常见、但是效率比较低。
2016-02-20 20:21:17
294
原创 什么时候使用多线程
使用多线程为什么可以提高效率呢?io是关键。很多的应用要使用io,但是cpu是很快的,io往往是很慢的。看代码main1.c#include #include #include #include #include #include char *p;void sys_error(int errnum){ perror(strerror(errnum)); ex
2016-02-20 19:45:06
1299
原创 c语言的const的写法
c语言有个const,const修饰的变量表示是一个常量。但是const一跟指针挨着就感觉有点麻烦。为什么呢,因为指针变量有个特点。比如普通的int 变量。const int a = 100;int const int a =100;const的位置无所谓,修饰肯定是a,表示a变量是一个常量。但是遇到了指针const int * a = &b;int
2016-02-15 15:09:53
471
原创 extern "c" 什么时候使用
在写c/c++的时候,对于c函数总要来个extern "c"{ func(...)}.那么到底什么时候需要呢写这个extern "c",不写又有什么后果呢。demo.cpp#include #include "mystring.h"using namespace std;int myStrlen(int num){ cout<<"num = "<<num<<endl
2016-02-15 10:55:44
2276
原创 斐波那契数列
求取斐波那契数列 常常使用递归方法,但是发现递归其实效率是很低的。下面的代码fib1是递归的,fib2是非递归的。#include #include #include long intfib1(int num){ if (num <= 2) return (1); else return (fib1(num-1) + fib1(num-2));}long
2016-02-14 11:38:01
498
原创 字符串回文判断
字符串回文就是从左到右阅读字符串和从右向左阅读的结果是一样的,就是说字符串是对称的。#include #include #include intIsReverse(const char *str){ if (str == NULL) return (-1); int left, right; left = 0; right = strlen(str)-1; whi
2016-02-14 10:28:32
429
原创 约瑟夫问题的单向循环链表的代码实现
#include #include #include //链表节点typedef struct node {int data;struct node *next;}Node;//创建一个单向循环链表 ,n表示创建的节点个数Node *createList(int n){int i;Node *head, *cur,
2016-02-13 22:37:58
589
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅