geosmart / me.demo.algorithm

数据结构,排序,查询等常用算法的Java实现

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

比较排序算法

BubbleSort 冒泡排序

InsertSort 插入排序

MergeSort 合并排序

SelectSort 选择排序

QuickSort 快速排序

R-Quick

线性排序算法

CountingSort 计数排序

Radix 基数排序

BucketSort 桶排序

三种线性排序的比较

排序算法 时间复杂度 空间复杂度
计数排序 O(N+K) O(N+K)
基数排序 O(N) O(N)
桶排序 O(N+K) O(N+K)

从整体上来说,计数排序,桶排序都是非基于比较的排序算法,而其时间复杂度依赖于数据的范围,桶排序还依赖于空间的开销和数据的分布。 而基数排序是一种对多元组排序的有效方法,具体实现要用到计数排序或桶排序。 相对于快速排序、堆排序等基于比较的排序算法,计数排序、桶排序和基数排序限制较多,不如快速排序、堆排序等算法灵活性好。 但反过来讲,这三种线性排序算法之所以能够达到线性时间,是因为充分利用了待排序数据的特性,如果生硬得使用快速排序、堆排序等算法,就相当于浪费了这些特性,因而达不到更高的效率。

Search 查找算法

顺序查找

BinarySearch 二分查找

二叉树查找

哈希表查找

About

数据结构,排序,查询等常用算法的Java实现


Languages

Language:Java 100.0%