算法和数据结构
喵先生MJ
喵了个咪的,才想起来喵在这儿还有个空间
展开
-
图解8大排序
8种排序之间的关系:1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 (2)实例(3)用java实现[java] view p转载 2014-07-17 10:16:23 · 328 阅读 · 0 评论 -
数据库的最简单实现
所有应用软件之中,数据库可能是最复杂的。MySQL的手册有3000多页,PostgreSQL的手册有2000多页,Oracle的手册更是比它们相加还要厚。但是,自己写一个最简单的数据库,做起来并不难。Reddit上面有一个帖子,只用了几百个字,就把原理讲清楚了。下面是我根据这个帖子整理的内容。一、数据以文本形式保存第一步,就是将所要保存的数据,写入文本文件。转载 2014-07-10 21:58:09 · 386 阅读 · 0 评论 -
程序员必须知道的10大基础实用算法及其讲解
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策转载 2014-07-02 18:23:52 · 287 阅读 · 0 评论 -
希尔排序算法的JAVA实现
package Utils.Sort; /***希尔排序,要求待排序的数组必须实现Comparable接口*/public class ShellSort implements SortStrategy{ private int[] increment; /** *利用希尔排序算法对数组obj进行排序 */ publi转载 2014-07-02 20:51:07 · 261 阅读 · 0 评论 -
二叉树迭代器算法
二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用。假设二叉树结点定义如下:// C++struct Node { int value; Node *left; Node *right;}中序递归遍历算法:转载 2014-07-02 23:55:11 · 401 阅读 · 0 评论 -
面试题:火车运煤问题
这个可能是一个比较经典的智力题了,和以前的那个《赛马问题》很相似,其题目如下:你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?这道题一开始看上去好像是无解的,因为你转载 2014-06-30 20:51:31 · 752 阅读 · 0 评论 -
插入排序算法的JAVA实现
package Utils.Sort;/***插入排序,要求待排序的数组必须实现Comparable接口*/public class InsertSort implements SortStrategy{ /** *利用插入排序算法对obj进行排序 */ public void sort(Comparable []obj)转载 2014-07-02 20:53:57 · 293 阅读 · 0 评论 -
归并排序算法的JAVA实现
package Utils.Sort;/***归并排序,要求待排序的数组必须实现Comparable接口*/public class MergeSort implements SortStrategy{ private Comparable[] bridge; /** *利用归并排序算法对数组obj进行排序 */转载 2014-07-02 20:52:29 · 273 阅读 · 0 评论 -
快速排序算法的JAVA实现
package Utils.Sort;/***快速排序,要求待排序的数组必须实现Comparable接口*/public class QuickSort implements SortStrategy{ private static final int CUTOFF = 3; //当元素数大于此值时采用快速排序 /**转载 2014-07-02 20:53:10 · 307 阅读 · 0 评论 -
冒泡排序算法的JAVA实现
package Utils.Sort;/***@author Linyco*利用冒泡排序法对数组排序,数组中元素必须实现了Comparable接口。*/public class BubbleSort implements SortStrategy{ /** *对数组obj中的元素以冒泡排序算法进行排序 */ public void转载 2014-07-02 20:51:40 · 272 阅读 · 0 评论 -
选择排序算法的JAVA实现
package Utils.Sort;/***@author Linyco*利用选择排序法对数组排序,数组中元素必须实现了Comparable接口。*/public class ChooseSort implements SortStrategy{ /** *对数组obj中的元素以选择排序算法进行排序 */ public void转载 2014-07-02 20:51:47 · 293 阅读 · 0 评论 -
从头到尾彻底解析哈希表算法
说明:本文分为三部分内容,第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。第一部分:Top K 算法详解问题描述百度面试题:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千转载 2014-07-16 22:16:12 · 312 阅读 · 0 评论 -
为什么要用递归
为什么要用递归编程里面估计最让人摸不着头脑的基本算法就是递归了。很多时候我们看明白一个复杂的递归都有点费时间,尤其对模型所描述的问题概念不清的时候,想要自己设计一个递归那么就更是有难度了。很多不理解递归的人(今天在csdn里面看到一个初学者的留言),总认为递归完全没必要,用循环就可以实现,其实这是一种很肤浅的理解。因为递归之所以在程序中能风靡并不是因为他的循环,大家都知道递归分两步转载 2014-08-08 01:40:04 · 5334 阅读 · 2 评论