
数据结构和算法
勇敢的俍心
谦虚,谨慎,自信,仔细。
展开
-
堆排序
百度面试二轮游,就像CP3摸不到西决地板一样,两轮面试都问到堆排序,感觉这个排序既考查数据结构,又考察排序算法, 可是反应一个人的基础。第一面的时候还不会,用快速排序代替了,写的还可以;第二面又问到,但是之前我有看过了,可是写代码还是很费劲,最后的最后,终究被pass掉了。 回来怒写了一遍堆排序:#include<stdio.h>int h[101];//全局变量,用数组来存储堆,从h[1]开始原创 2016-05-24 16:14:47 · 329 阅读 · 0 评论 -
快速排序
快速排序思想:以一维数组为例,选择最左边的元素为基准点,先从右往左找小于基准点的数,再从左往右找大于基准点的数,然后交换他们。再继续……直到两个索引相等的时候相遇了,交换相遇这个点和基准点的值,再以此为中点分成两个部分(二分法),对这两部分再次重复上述操作……直到不能再分。#include <stdio.h>int array[100],num;void quicksort(int left,in原创 2016-05-24 19:42:17 · 396 阅读 · 0 评论 -
深度优先算法(DFS)
前言:英文缩写为DFS,可笑的是,我最早去HP公司面试做笔试题的时候, 竟然没看出来是什么意思,当然即使知道是这个算法,当时也不太会写。本科都是学过的,就是后来忘记了。思路说明:理解深度优先算法的关键在于解决“当下该如何做”。至于下一步应该如何做,和当下应该如何做是一样的,对!就是用递归!自己调用自己!递归函数模型:void dfs(int step){ 判断边界,如果到了边界当然直原创 2016-05-25 10:08:45 · 5440 阅读 · 0 评论 -
广度优先算法(BFS)
与博客中的深度优先对照起来看,此处不再赘述。void bfs(int begin){ int head = 0;//数组的起始位置 int tail = 0;//数组的起始位置 int i; int cur; que[tail] = begin;//起始点先加入队列,加入对尾 tail++; book[begin] = 1; whil原创 2016-05-25 12:06:34 · 400 阅读 · 0 评论 -
Java中TreeMap和HashMap的应用和比较
**注意:**TreeMap的写法可用于Mapreduce中reduce程序中对K,V的排序输出,K,V在输出时互换。package cn.bjut.vlsi.TreeMap;import java.util.HashMap;import java.util.Map.Entry;import java.util.Set;import java.util.TreeMap;public class原创 2016-08-23 22:18:28 · 2475 阅读 · 2 评论