Skip to content

basic data structure and algorithm implementation using java

Notifications You must be signed in to change notification settings

fredZhao015/algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基础算法实现

各种排序性能对比如下,有些排序未详细介绍,暂且放到这里。具体参加我的简书页面.

排序类型 平均情况 最好情况 最坏情况 辅助空间 稳定性
选择排序 O(n²) O(n²) O(n²) O(1) 不稳定
插入排序 O(n²) O(n) O(n²) O(1) 稳定
希尔排序 O(n^1.3) O(nlogn) O(n²) O(1) 不稳定
归并排序 O(nlog₂n) O(nlog₂n) O(nlog₂n) O(n) 稳定
堆排序 O(nlog₂n) O(nlog₂n) O(nlog₂n) O(1) 不稳定
快速排序 O(nlog₂n) O(nlog₂n) O(n²) O(nlog₂n) 不稳定

从时间复杂度来说:

(1). 平方阶O(n²)排序:**各类简单排序:直接插入、直接选择

(2). 线性对数阶O(nlog₂n)排序:快速排序、堆排序和归并排序

(3). O(n1+§))排序,§是介于0和1之间的常数:希尔排序

说明

  • 当原表有序或基本有序时,直接插入排序和冒泡排序将大大减少比较次数和移动记录的次数,时间复杂度可降至O(n);
  • 而快速排序则相反,当原表基本有序时,将蜕化为冒泡排序,时间复杂度提高为O(n2);
  • 原表是否有序,对简单选择排序、堆排序、归并排序和基数排序的时间复杂度影响不大。 image.png

About

basic data structure and algorithm implementation using java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published