摘要:先序遍历 : 通俗来讲,就是先打印父节点,然后打印左孩子节点 ,最后打印右孩子节点 举个例子:2 3 分别是 节点1的左右孩子 4 5 分别是节点2 的左右孩子 6 7是节点3的左右孩子 1 2 3 4 5 6 7 先序的遍历的结果为 1 2 4 5 3 6 7 递归代码实现: public sta
        
阅读全文
 
            
         
        
            
            
摘要:给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为:1,2,3,4,8,12,16,15,14,13,9, 5,6,7,11, 10 1 public class PrintMatrixSpiral
        
阅读全文
 
            
         
        
            
            
摘要:算法描述: 桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。 桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到一定数量的桶里。 实现逻辑: 1.设置一个定量的数组当作空桶; 2.遍历输入数据,并且把数据一个一个放到对应的桶
        
阅读全文
 
            
         
        
            
            
摘要:算法描述: 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 动画演示: 实现逻辑: 把
        
阅读全文
 
            
         
        
            
            
摘要:算法描述: 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 动画演示: 实现逻辑: 快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法流程如下: 从
        
阅读全文
 
            
         
        
            
            
摘要:转自:http://www.cnblogs.com/zhanghaiba/p/3594559.html 最近有个朋友问我一个算法题—— 给你几亿个QQ号,怎样快速去除重复的QQ号? 可以作如下假定: QQ号数字范围从0到十亿,即[0, 1000000000),且最多给你10亿个QQ号,这些QQ号放在
        
阅读全文
 
            
         
        
            
            
摘要:算法描述: 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点(小根堆与大根堆)。 实现逻辑: 将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区; 
        
阅读全文
 
            
         
        
            
            
摘要:问题描述:给定一个数组arr,和一个数num,请把小于num的数放在数组的 左边,等于num的数放在数组的中间,大于num的数放在数组的 右边。 要求额外空间复杂度O(1),时间复杂度O(N) 问题分析:这部分其实和快排中的partition部分很相似,其思想就是将任意一个数组分成三部分,分别是小于
        
阅读全文
 
            
         
        
            
            
摘要:算法描述:插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 动画演示: 一般来说,插入排序都采用in-place在数组上实现。具体算法流程如下: 1.从第一个元素开始,该元素可
        
阅读全文
 
            
         
        
            
            
摘要:冒泡排序 算法描述:冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 动画演示 实现逻辑 1.
        
阅读全文