常见排序算法总结

15 篇文章 0 订阅
7 篇文章 0 订阅

排序(sorting)
排序(Sorting)
第一类:内部与外部排序
第二类:稳定与不稳定排序法

第三类:简单与高等排序法



常见之排序算法
冒泡排序(Bubble sorting)
选择排序(Selection sorting)
插入排序(Insertion sorting)
快速排序(Quick sorting)
堆排序(Heap sorting)
希尔排序(Shell sorting)
归并排序(Merge sorting)
基数排序(Radix sorting)
 
排序(Sorting)

排序(sorting),将一组数据一用户需求,予以重新排列其顺序。一般会依数据之大小顺序排序(由大至小、或由小至大)。排序后之资料,优点为容易阅读、统计分析、与快速搜寻所要之资料。



「数据结构」课程中,排序法分分类方式有三类:
第一类:内部与外部排序
内部排序(Internal sort)又称「数组排序」。
【定义】排序之工作,主要在主存储器(RAM)完成。
【适用时机】数据量较少者。
外部排序(External sort)又称「归档(profile)排序」。
【定义】排序之工作,主要是在辅助内存(Disk, File)完成。
【适用时机】数据量较大者。
 



第二类:稳定与不稳定排序法

稳定排序法(stable sorting),如果键值相同的数据,在排序后相对位置与排序前相同时,称稳定排序。
【例如】
排序前:3,5,19,1,3*,10
排序后:1,3,3*,5,10,19  (因为两个3, 3*的相对位置在排序前与后皆相同。)
不稳定排序法(unstable sorting),如果键值相同之数据,在排序后相对位置与排序前不相同时,称不稳定排序。
【例如】
排序前:3,5,19,1,3*,10
排序后:1,3*,3,5,10,19  (因为两个3, 3*的相对位置在排序前与后不相同。)




第三类:简单与高级排序法

简单排序法
【定义】排序算法简单,但运行时间较长。
【平均时间复杂度】
高级排序法
【定义】排序算法复杂,运行时间较短。
【平均时间复杂度】
常见之排序算法

常见之排序算法:冒泡排序、选择排序、插入排序、快速排序、堆(heap)排序、希尔(shell)排序、归并排序、基数排序

常见算法的总结:

排序方法

最坏时间

平均时间

稳定

额外空间

备注说明

气泡排序

Bubble

O(n2)

O(n2)

稳定

O(1)

n小比较好。

选择排序

Selection

O(n2)

O(n2)

不稳定

O(1)

n小较好,部份有序更好。

插入排序

Insertion

O(n2)

O(n2)

稳定

O(1)

大部份有序比较好。

快速排序

Quick

O(n2)

O(nlog2n)

不稳定

O(n)~

O(log n)

在数据已排序好时会产生最差状况。

堆排序

Heap

O(nlog2n)

O(nlog2n)

不稳定

O(1)

 

希尔排序

shell

O(ns)

1<s<2

O(n(log2n)2)

不稳定

O(1)

n小比较好。

合并排序

Merge

O(nlog2n)

O(nlog2n)

稳定

O(n)

常用于外部排序。

基数排序

Radix

O(nlogbB)

O(n)~

O(nlogbk)

稳定

O(nb)

k:箱子数

b:基数



源地址: http://spaces.isu.edu.tw/upload/18833/3/web/sorting.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值