算法
文章平均质量分 75
renshangtao
一个工作重新开始的的人
展开
-
输入一个整形数组,求所有子数组的和的最大值
本想将最大值所对应的字串也打印出来的,但是想来想去,想不到用什么办法来记录字串的两个边界值。请各位达人不吝惜指教 /* 题目: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3原创 2013-03-06 23:45:58 · 1310 阅读 · 0 评论 -
使用堆排序对一组随机数进行排序
使用堆排序对一组随机数进行排序: 同时可以与冒泡排序比较排序时间#include #include #include /* 数组个数 */#define ARRAY_SIZE 56/*控制是否打印数组*/#define IS_PRINT 1/* 用随机数填写数组 */void fillArrayWithRand(int iarray[], int num){ int原创 2013-03-08 22:01:03 · 1363 阅读 · 0 评论 -
C语言编程实现西西弗斯串
/*设定一个任意数字串,数出这个数中的偶数个数,奇数个数,及这个数中所包含的所有位数的总数,例如:1234567890,偶:数出该数数字中的偶数个数,在本例中为2,4,6,8,0,总共有 5 个。奇:数出该数数字中的奇数个数,在本例中为1,3,5,7,9,总共有 5 个。总:数出该数数字的总个数,本例中为 10 个。新数:将答案按 “偶-奇-总” 的位序,排出得到新数为:55原创 2013-04-07 22:28:38 · 2247 阅读 · 0 评论 -
几种锁的简单实现
1、自旋锁特点:它属于busy-waiting类型的锁,线程竞争自旋锁,如果竞争不到,线程会不停的忙等待,不停的重试锁请求。如果长时间请求不到自旋锁,自旋锁看起来就像死循环一样。从自旋锁的特点来看,自旋锁只适合与竞争不太激烈(即并发争锁的线程个数不多),并且临界区不大的情况。/* 锁住 */void lock(Lock *lock){ while(1 == lock->lock);原创 2013-04-07 22:34:27 · 562 阅读 · 0 评论 -
海量数据处理 百度面试题 从40亿IP地址中取出出现次数最多的那个IP地址,我的解法
/* 从40亿IP地址内部获取出出现次数最多的IP地址。40亿*20 = 80G空间 转化为整形IP大约占16G空间 给定1G空间处理 将IP地址分配到32个文件中 16/32 = 512MB 将整形态的IP进行分割,使用前5位代表文件ID,后27位为存储在文件中的Value值。最大值为2^27 使用哈希表对Ip进行统计 512M的HASH筒可以包含的整数范围为512*1024*1024/4 =原创 2014-09-14 21:52:02 · 2095 阅读 · 0 评论