面试算法
cs408
大隐隐于市
展开
-
JAVA排序汇总
JAVA排序汇总package com.softeem.jbs.lesson4; import java.util.Random; /** * 排序测试类 * * 排序算法的分类如下: * 1.插入排序(直接插入排序、折半插入排序、希尔排序); * 2.交换排序(冒泡泡排序、快速排序); * 3.选择排序(直接选择排序、堆排序); *转载 2015-08-07 21:17:03 · 341 阅读 · 0 评论 -
Java求最大公约数和最小公倍数
import java.util.*; /*求最大公约数和最小公倍数*/ public class MaxCommonDivisorAndMinCommonMultiple { public static void main(String[] args) { Scanner scan = new S转载 2015-10-14 21:18:31 · 1384 阅读 · 0 评论 -
面试70问 经典回答
1、请你自我介绍一下你自己, 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,转载 2015-10-14 20:05:36 · 999 阅读 · 0 评论 -
递归算法的时间复杂度终结篇与Master method
开篇前言:为什么写这篇文章?笔者目前在学习各种各样的算法,在这个过程中,频繁地碰到到递归思想和分治思想,惊讶于这两种的思想的伟大与奇妙的同时,经常要面对的一个问题就是,对于一个给定的递归算法或者用分治思想缩小问题规模的算法,如何求解这个算法的时间复杂度呢?在google过很多的博文后,感觉这些博文总结的方法,有很好优秀的地方,但是都不够全面,有感于此,笔者决定总结各家之长,作此博文,总结各种方法于转载 2015-09-20 22:33:28 · 2147 阅读 · 0 评论 -
归并排序(四)
package bishi0904;import java.util.Arrays;/** * * @author Administrator *归并排序原理:对于给定的一组记录(假设共有n个记录),首先将每两个相邻的长度为1的子序列进行归并,得到 *n/2(向上取整)个长度为2或者1的有序子序列,再将其两两归并,反复执行此过程,直到得到一个有序序列 *关键的两步:1、划分半子表原创 2015-09-04 21:10:02 · 324 阅读 · 0 评论 -
希尔排序(六)
import java.util.Arrays;/** * * @author Administrator *希尔排序又称为“缩小增量排序”,其基本原理如下:先将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少, *然后对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序后”,最后对所有的元素进行一次直接插入排序 */public class ShellSo原创 2015-09-06 16:10:15 · 395 阅读 · 0 评论 -
快速排序(五)
import java.util.Arrays;/** * * @author Administrator * 快速排序的思想:(1)首先判断左右哨兵的关系(break),然后选取基准数temp,然后从左向右找到小于temp的元素停下来,接着从右向左找到大于temp的元素停下来 * (2)如果左右哨兵不相等,就交换左右两个哨兵的元素 * (3)重复(1)(2),直到左右哨兵相等,将原创 2015-09-06 11:17:00 · 508 阅读 · 0 评论 -
堆排序(七)
import java.util.Arrays;/** * * @author lixuwu *堆排序两步:建立堆的过程,堆的调整过程 *堆中的元素用数组来进行存储,标号从1开始;结点i的左右子树为2i和2i+1,堆的最后一个非叶结点的编号为n/2 *堆的大小即为堆中元素的个数,不等于数组的大小(这里在堆得调整过程中很重要) *对于堆的存储结构数组,第一个元素的下标为0,一般用一个原创 2015-09-12 16:18:10 · 442 阅读 · 0 评论 -
冒泡排序(三)
冒泡排序算法原创 2015-09-04 21:08:15 · 383 阅读 · 0 评论 -
插入排序(二)
/** * * @author Administrator * 插入排序原理:对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余记录为无序序列; * 接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中, * 直至最后一个记录插入到有序序列中为止; *从原数组第2个元素开始,遍历数组,依次把遍历到的元素按照一定的顺序插入到当前元素的小数组中(自原创 2015-09-04 20:56:55 · 388 阅读 · 0 评论 -
选择排序(一)
import java.util.Arrays;/** * * @author Administrator * 选择排序的基本原理:(1)对于给定的一组记录,经过第一轮的比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换; * (2)接着对不包括第一个记录以外的其它记录进行第二轮比较,得到最小的记录并与第二个记录进行位置交换; * (3)重复该过程,直到进行比较的记录只有一原创 2015-09-04 20:48:24 · 363 阅读 · 0 评论 -
反转单链表的几种方法
反转单链表的几种方法 最近试着做一些笔试面试题,既是为来年找工作做准备,也可以做为数据结构和算法的复习笔记,就陆续发在这里吧,有需要的朋友可以看一下,如果有没考虑周全的地方欢迎指正。 先来一个最常见的题目:反转单链表。假设单链表的数据结构定义如下: typedef struct LNode{ int转载 2015-07-24 16:34:15 · 502 阅读 · 0 评论 -
如何判断链表中是否有环
如何判断链表中是否有环分类: 数据结构与算法学习笔记2012-11-12 16:04 8929人阅读 评论(6) 收藏 举报今天面试被问住了,很惭愧啊,回来上网查了一下思路。自己写了点程序。1.如何判断是否有环?如果有两个头结点指针,一个走的快,一个走的慢,那么若干步以后,快的指针总会超过慢的指针一圈。2.如何计算环的长度?第一次相遇(超一圈)时开始计数,第转载 2015-07-24 10:33:10 · 418 阅读 · 0 评论 -
Java提高 - 字符串循环移位
Java提高 - 字符串循环移位问题,给你一个字符串,要求循环左移n位。比如对"abcdefg"循环左移2位,我们要得到"cdefgab"。附加条件,不能使用连续辅助空间(包括动态分配),只能使用若干单个变量(即O(1)空间)。首先,我们知道,反转一个字符串操作("abcd"变"dcba"),是不需要额外数组辅助的,只要头尾数据交换就可以了。然而,可能你不知道,仅仅转载 2015-08-24 16:52:55 · 3365 阅读 · 0 评论 -
树的深度优先与广度优先遍历
原题出自百度的笔试:简述树的深度优先及广度优先遍历算法,并说明非递归实现。 当时我看到这个题目的时候,已经完全记不得非递归算法该怎么实现了,后来查阅了一下,要用到两个辅助的数据结构:深度优先遍历--->栈;广度优先遍历--->队列;这里以二叉树为例来实现。 import java.util.ArrayDeque; public cla转载 2015-10-16 00:13:06 · 583 阅读 · 0 评论