算法总结
文章平均质量分 78
zeb_perfect
一切才刚刚开始。。
展开
-
归并排序算法学习
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。 我用java实现合并,然后使用se原创 2014-11-24 09:33:44 · 745 阅读 · 0 评论 -
剑指offer面试题-求整数二进制中1的个数
题目: 请实现一个函数,输入一个整数,输出该数二进制1的个数。例如2为0010,该函数输出1. 输入: 一个整数(不管正负) 输出: 该整数1的个数 解题思路: 最先想到的方法是该整数与一个整数1做于操作,每做一次,该整数左移一位,直到变成0,基于这样的思路不难写出代码一。但是这样的话,代码一会在输入负数的时候,会引起死循环,所以我们可以声明变量B(初始为1)与该整数原创 2016-06-13 17:34:23 · 976 阅读 · 0 评论 -
java求素数算法
求100内的素数: public void a() { for (int i = 2; i <= 100; i++) { int temp = (int) Math.sqrt(i); // 我把那个aqrt单独提出来,这样速度稍微快一点,虽然在100内变化不大,但如果是10000000内的素原创 2015-02-03 22:31:08 · 9638 阅读 · 0 评论 -
2015.1.29试题笔记
设在内存中有P1,P2,P3三道程序,并按照P1,P2,P3的优先级次序运行,其中内部计算和IO操作时间由下表给出(CPU计算和IO资源都只能同时由一个程序占用):P1:计算60ms---》IO 80ms---》计算20ms P2:计算120ms---》IO 40ms---》计算40ms P3:计算40ms---》IO 80ms---》计算40ms 并行完成三道程序比单道运行节省的时间是(160m原创 2015-01-29 21:47:30 · 1655 阅读 · 0 评论 -
各种排序时间空间复杂度稳定性分析
下面是常见排序算法的速度比较:(从慢到快) 1、冒泡排序O(N^2) 2、简单选择排序O(N^2) 3、直接插入排序O(N^2) 4、折半插入排序O(N^2) 5、希尔排序,近似为O(N^1.25) (尚无定论,但可以确定是N~N^2之间的多项式时间复杂度) 6、堆排序O(NlogN) 7、归并排序O(NlogN) 8、快速排序O(NlogN) 一般来说是快排最快的。但是原创 2015-01-28 21:26:41 · 1780 阅读 · 1 评论 -
给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。 struct Node { int value; Node *left; Node *right; }; void createTree(int a[], int begin, int end, Node* &r原创 2015-01-28 20:25:49 · 1115 阅读 · 0 评论 -
学习《编程珠玑》-位向量/位图的定义和应用
位向量/位图是一个很有用的数据结构,在充分利用小空间存储大量数据方面非常具有优势,Linux内核中很多地方都是用了位图。同时,它不但基础,而且用到了很多编程语言的知识,以及对细节的把握,常常作为面试题出现。这里将要介绍它的实现、操作、应用。 与位图(bitmap)比,我更倾向于用位向量(bit vector),前者比较容易与图形学里的名词混淆,其实提到位图,多指的是“是使用像素阵列来表示的图转载 2014-11-20 14:19:17 · 2869 阅读 · 0 评论 -
《编程珠玑》开篇题解析,session问题,日志总结
对磁盘文件排序问题 分析:输入,最多包含n个正整数的文件,每个数小于n,n=10^7,没有任何整数重复出现,没有其他数据与该整数关联。 输出,按升序排列的输入整数的列表。 约束,大约1MB内存空间可用,充足磁盘存储空间可用。运行允许时间最多几分钟,不需要优化。 设计:1MB大约有一百万个字节,如果每个号码用七个字节存,能存143000个,如果每个号码用32位2^原创 2014-11-21 17:05:24 · 1097 阅读 · 0 评论 -
面试题:八皇后算法分析
1.引子 中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每走一步都更靠近目标结果一些,直到遇到障碍物,我们才考虑往回走。然后再继续尝试向前。通过这样的波浪式前进方法,最终达到目的地。当然整个过程需要很多往返,这样的前进方式,效率比较低下。 2.适用范围 适用于那转载 2014-11-03 10:50:50 · 1172 阅读 · 0 评论 -
C++和java中关于全排列和组合的有关算法
收集的排列加组合的各种算法,还有待完善: 一.利用二进制状态法求排列组合,此种方法比较容易懂,但是运行效率不高,小数据排列组合可以使用 import java.util.Arrays; //利用二进制算法进行全排列 //count1:170187 //count2:291656 public class test { public static void main(S原创 2014-12-03 13:34:42 · 1935 阅读 · 0 评论 -
分组Top N问题(一) - java实现Top n算法基础
前言: 在分析MapReduce、Hive、Redis和Storm、Spark等工具实现分组Top n问题前,我们先看下java最原始实现Top的方法有哪些,为后面奠定些基础,这也是我要整理成一个系列的原因。 对于Top n问题,这里根据数据特点用合并法、快排过程法、大小顶堆和PriorityQueue固定队列四种方式来实现。 合并法: 数据描述:这种方法适用于几个数组有序的情况,来求To原创 2016-11-25 14:58:46 · 12846 阅读 · 7 评论