数据结构
東方海竹
宁可失败,不能平庸
展开
-
数组排序之快速排序
据大家所知的,快速排序是目前的一种非常快的排序方法,它是由C. A. R. Hoare在1962年提出。它的基本思想是:选择一个中间key值,作为分蘖点。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比key小,另外一部分的所有数据都要比key大,然后再递归调用按此方法对这两部分数据分别进行快速排序,以此达到整个数据变成有序序列。 我们...原创 2012-11-25 12:12:37 · 168 阅读 · 0 评论 -
java实现常用的八种内排序方法
虽然以前写过两篇关于内排序的博客,但时间一长这算法也就容易忘记了,所以最近又整理了一次,将八种排序方法一一实现下,它们分别是: 直接插入排序 希尔排序 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 最低位优先的基数排序 前面七种排序我用的数据结构是hashMap,其储存方式为<key,value>的键值对形式,我选...2014-03-22 18:02:54 · 80 阅读 · 0 评论 -
byte用于数字排序
【问题】 对一百万个不相同的数字进行排序,要求时间复杂度O(1),空间复杂度尽可能小!【分析】 大数据的排序问题,首选方法是“归并”,之前我也写过十亿个数的归并排序算法,且在此基础上的优化方案——大范围内归并小范围内插入排序等等,但本文有一个时间复杂度的要求,归并排序的时间复杂度是O(nlgn),因此我们尝试一种新闻排序算法——“bit排序法”。 “bit排序法”——待排序的数...2015-11-17 17:15:30 · 379 阅读 · 0 评论 -
大范围归并小范围插入排序
首先介绍归并和插入的算法思想,其实现细节可以参考博客http://java--hhf.iteye.com/blog/2034925/,然后再具体实现本文主要介绍的“大范围归并小范围插入排序” (一)插入排序 算法执行思路如图 实现算法: (二)归并排序(分治法) 先将源数据分成一个一个的小组,然后两两合并即是 合并两个数据的实现思路:(将L,R合并为A返回)时间复杂度 ...2014-12-05 10:44:29 · 172 阅读 · 0 评论 -
优先级队列(堆实现)
(一)优先级队列定义 (二)方法实现 获得最大元素方法 去掉最大元素方法 修改优先级方法 添加节点 (三)实现 /** * 用堆实现一个优先级队列 * 主要是添加、修改、删除节点 * 节点具有唯一性 * @author HHF * 2014年11月28日 */ public class PriorityQueue { public s...2014-12-05 11:22:49 · 242 阅读 · 0 评论 -
10亿个字符串的排序问题
一、问题描述 有一个大文件,里面有十亿个字符串,乱序的,要求将这些字符串以字典的顺序排好序 二、解决思路 将大文件切割成小文件,每个小文件内归并排序; 对所有的小文件进行归并排序——多重归并排序 三、解决方案 3.1 模拟产生10亿个随机字符 public static void generateDate() throws IOExce...2014-12-14 16:22:43 · 684 阅读 · 0 评论