growing
发布时间:2016-04-12 19:46:57
问题:A公司的支付软件某宝和T公司某信红包大乱战。春节后高峰以后,公司Leader要求后台的攻城狮对后台的海量数据进行分析。先要求分析出各地区发红包金额最多的前100用户。现在知道人数最多的s地区大约有1000w用户。要求写一个算法实现。问题分析:我们知道,对1000W个数据很难具体用一个排序来全部排出来所有元素,然后.........【阅读全文】
发布时间:2016-04-10 14:25:44
1.计数排序思路:相当于开个哈西表,表里存的是数字个数,数字做相对下标,以空间换时间。特点:适合排范围集中的正数序列。时间复杂度:O(n)空间复杂度:O(1)void CountSort(int *a,size_t size) { assert(a); // 确定.........【阅读全文】
发布时间:2016-04-08 11:45:54
1.传统方法思路:任意找一个key,begin和end从两头找,begin找大(相对于key),end找小,找到了就交换。完毕之后将key放在中间为boundary,再用两边的区间递归上面的做法,直到元素有序。int Partition(int *a,int left,int right){ assert(a); &nb.........【阅读全文】
发布时间:2016-04-05 11:53:15
1.插入排序原理:从第二个元素开始拿出元素,向其前面的区间里插。知道插到最后一个元素完了即有序。特点:序列接近有序时效率较高,适合小于千级数量的排序。时间复杂度:O(N^2) 最好的时候接近O(N),即每次插的位置都是其原位,不用挪动。空间复杂度:O(1)void InsertSort(int *a,size_t size).........【阅读全文】