算法
文章平均质量分 71
辉仔
你越优秀,世界越公平
展开
-
c语言 常用字符串函数
#include#include#include#includeint _strlen( const char* str );int _strcmp( const char* first, const char* second );char* _strcat( char* dst, const char* src );int _strstr( const char* src, co原创 2012-04-24 10:17:26 · 753 阅读 · 0 评论 -
百度笔试题:负数在前 正数在后(奇数在前,偶数在后)
百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变。时空复杂度要求分别为:o(n)和o(1)。百度面试题(二),给定一个存放正数的数组,重新排列数组使得数组左边为奇数,右边为偶数,且保证奇数和偶数之间元素相对位置不变。时空复杂度要求分别为:o(n)和o(1)。分析:以上两个面试题本质是原创 2012-05-15 11:15:21 · 6704 阅读 · 18 评论 -
大整数相减
#include#include#include#includechar* bigIntMinus( const char* numstr1, const char* numstr2 ){ assert( numstr1 != NULL && numstr2 != NULL ); int len1 = strlen( numstr1 );原创 2012-04-23 13:33:02 · 1915 阅读 · 0 评论 -
LRU算法
LRU 即:Least Recently Used 最近最少使用算法 关于操作系统的内存管理,如何节省利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。而内存的虚拟存储管理,是现在最通用,最成功的方式——在内存有限的情况下,扩展一部分外存作为虚拟内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩充了内存的功能,极大地提高了计算机的并发度。虚拟页式存储管理,则是将进程所转载 2012-05-03 19:58:55 · 1457 阅读 · 0 评论 -
浅谈 磁盘调度算法
磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种:先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN) 例:假定某磁盘共有200个柱面,编号为0转载 2012-05-03 19:42:16 · 31084 阅读 · 1 评论 -
多重集合的排列和组合问题
一、先来回顾一下无重复元素的排列组合定义排列,英文名为Permutation,是指从某元素集合中取出指定个数的元素进行排序组合,英文名为Combination,是指从某元素集合中仅仅取出指定个数的元素,不考虑排序从有n个不同元素的集合任取r个元素的排列方式有:P(n, r) = n*(n-1)*...*(n-r+1) = n! / (n-r)!,特别地 P(n,n) =原创 2012-04-17 16:18:12 · 22891 阅读 · 1 评论 -
短网址简介
短网址简介首先来温习下短网址的相关知识:1、首先要了解什么是短网址?简单的说明是:把你认为长的难记或放不下的本站网址用本功能生成一个简短网址,使用短网址即可直接访问它。2、其次它有什么用?你发布的或看到的有价值信息,可能需要发给QQ、MSN、论坛等里的好友或者进行宣传,那么就可以使用生成这个简短的网址。3、目前大多数的在线缩短网址都提供有API的。在Twitter的等息有字数限制的转载 2012-04-26 16:51:39 · 1067 阅读 · 0 评论 -
二叉树的层次遍历以及二叉树的深度
// 算法思想:类似广度优先搜索算法BFS,使用一个队列来进行层次遍历// 关键伪代码如下typedef struct node{ elementType data; struct node* left; struct node* right;}BTree;void layerTraverse( BTree* tree ){ initQueue(Q);原创 2012-04-26 16:12:23 · 2642 阅读 · 0 评论 -
给出二叉树的先序和中序遍历,递归求解后序遍历
#include int findIndex( int arr[], int begin, int end, int num ){ int idx; for ( idx = begin; idx <= end; ++idx) { if ( arr[idx] == num) { return idx; } } return -1;}void postOrde原创 2012-04-26 15:38:08 · 3210 阅读 · 0 评论 -
位操作:一个整数的二进制表示中 有多少个1?
#include int countHowMuchOne( int number ){ int count = 0; while ( number ) { number = number & ( number-1 ); ++count; } return count;}int main(){ int num = 11; int count = 0; cou原创 2012-04-25 19:16:58 · 2919 阅读 · 1 评论 -
位操作:十进制数转为二进制,八进制,十六进制
#include #include #define MAP_LEN 16#define HEX_SHIFT 4#define HEX_LEN ( (int)(32/HEX_SHIFT) + 1 )#define OCT_SHIFT 3#define OCT_LEN ( (int)(32/OCT_SHIFT) + 1 )#define BIN_SHIFT原创 2012-04-25 16:59:13 · 1695 阅读 · 0 评论 -
大整数相加
#include#include#include#include// 思路如下// 将两个字符串分别由低位到高位放置到int数组中// 然后每位对齐相加,大于10,本位取余,高位进1char* bigIntAdd( const char* numstr1, const char* numstr2 ){ assert( numstr1 != NULL && num原创 2012-04-23 11:31:08 · 1467 阅读 · 0 评论 -
动态口令
动态口令的核心是口令生成算法和时间同步问题 一、口令生成算法口令生成算法是基于时间的一种秘密算法,它是根据用户密钥数据和当前的时间产生一固定长度的字符串。以下是一种产生16位动态口令的示范算法:1)程序提取当前时间和用户密钥数据。2)利用时间对用户密钥数据进行加密。3)利用SHA-1算法提取加密结果的消息摘要。4)将所产生的消息摘要作为动态口令使用。当然如果在需要用户输转载 2012-12-29 14:16:47 · 5611 阅读 · 0 评论