algorithm
peach_li
不牛不是我
展开
-
基数排序
基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。 不妨通过一个具体的实例来展示一下,基数排序是如何进行的。 设有一个初始序列为: R {50, 123, 543, 187, 49, 30, 0, 2, 11, 100}。我们知道,任何一个阿拉伯数,它的各个位转载 2016-03-17 10:18:15 · 596 阅读 · 0 评论 -
原地逆置列表reverseList
非常厉害的列表逆置方法://逆置单链表,原地操作,只需要遍历一遍private ListNode reverse(ListNode head){ ListNode pre = null; ListNode cur = head; while(cur!=null) { ListNode next = cur.next; cur.nex原创 2016-03-05 18:08:55 · 1459 阅读 · 0 评论 -
一致性哈希
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正转载 2016-06-29 22:04:28 · 278 阅读 · 0 评论 -
最小生成树-Prim算法和Kruskal算法
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗原创 2016-04-22 10:24:32 · 2211 阅读 · 0 评论 -
各种排序算法的分析及java实现
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键转载 2016-04-21 11:32:08 · 588 阅读 · 0 评论 -
Hash概率问题
Hash是把锋利的刀子,处理海量数据时经常用到,大家可能经常用hash,但hash的有些特点你是否想过、理解过。我们可以利用我们掌握的概率和期望的知识,来分析Hash中一些有趣的问题,比如:平均每个桶上的项的个数平均查找次数平均冲突次数平均空桶个数使每个桶都至少有一个项的项个数的期望 本文hash的采用链地址法发处理冲突,即对hash值相同的不同对象添加到ha原创 2016-04-15 10:42:16 · 9058 阅读 · 0 评论 -
LeetCode-146. LRU Cache
Problem: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get the value (will always be positive) of原创 2016-04-15 10:37:15 · 734 阅读 · 0 评论 -
LeetCode-62. Unique Paths/63. Unique Paths II
Problem: A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below). The robot can only move either down or right at any point in time. The robot is tr原创 2016-04-12 23:11:44 · 450 阅读 · 0 评论 -
堆排序
堆排序 Heap Sort堆排序 Heap Sort 堆排序是一种选择排序,其时间复杂度为O(nlogn)。堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki 2i 且ki 2i+1 (最小化堆或小顶堆) 情形2:ki >= k2i 且ki >= k2i+1 (最大化堆或大顶堆) 其中i=1,2,…转载 2016-03-17 12:05:51 · 1338 阅读 · 0 评论 -
快速排序
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列转载 2016-03-17 11:57:58 · 261 阅读 · 0 评论 -
冒泡排序、选择排序、插入排序
最近在看数据结构与算法分析,想写个笔记记录一下,先从基本的冒泡、选择、插入开始吧。注:都是以增序为例说明一、冒泡排序 1、原理:从数组的第一个位置开始两两比较array[index]和array[index+1],如果array[index]大于array[index+1]则交换array[index]和array[index+1]的位置,止到数组结束;转载 2016-03-17 10:24:18 · 330 阅读 · 0 评论 -
Java单链表接本操作
Java单链表基本操作: (一)顺序查找; (二)指定位置增加节点; (三)删除当前节点; (四)单链表反转; (五)输出倒数第K个节点; (六)删除重复节点; (七)排序 (八)合并两个排序单链表; (九)交换相邻节点的值; (十)O(n)时间内查找单链表的中间节点 (十一)逆序(从尾至头)输出单链表 (十二)判断单链表是否有环 (十三)判断两个原创 2016-08-14 21:13:40 · 776 阅读 · 0 评论