Submit Search
Upload
10种排序简介
•
Download as PPTX, PDF
•
1 like
•
620 views
W
Wesley Chen
Follow
In my company, some guys
Read less
Read more
Report
Share
Report
Share
1 of 29
Download now
Recommended
02.第二章用Matlab求导
02.第二章用Matlab求导
Xin Zheng
01.第一章用Matlab求极限
01.第一章用Matlab求极限
Xin Zheng
05.第五章用Matlab计算积分
05.第五章用Matlab计算积分
Xin Zheng
Ch5 範例
Ch5 範例
hungchiayang1
Ch12 教學
Ch12 教學
hungchiayang1
Ch11 範例
Ch11 範例
hungchiayang1
07.第七章用Matlab解常微分方程
07.第七章用Matlab解常微分方程
Xin Zheng
12.第十二章用Matlab计算第二类积分
12.第十二章用Matlab计算第二类积分
Xin Zheng
Recommended
02.第二章用Matlab求导
02.第二章用Matlab求导
Xin Zheng
01.第一章用Matlab求极限
01.第一章用Matlab求极限
Xin Zheng
05.第五章用Matlab计算积分
05.第五章用Matlab计算积分
Xin Zheng
Ch5 範例
Ch5 範例
hungchiayang1
Ch12 教學
Ch12 教學
hungchiayang1
Ch11 範例
Ch11 範例
hungchiayang1
07.第七章用Matlab解常微分方程
07.第七章用Matlab解常微分方程
Xin Zheng
12.第十二章用Matlab计算第二类积分
12.第十二章用Matlab计算第二类积分
Xin Zheng
TQC+ 程式語言 Python 03:迴圈
TQC+ 程式語言 Python 03:迴圈
neochen2701
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
Minyi Yan
Ch12 範例
Ch12 範例
hungchiayang1
Ch9 範例
Ch9 範例
hungchiayang1
Ch2 教學
Ch2 教學
hungchiayang1
[Crypto Course] LFSR
[Crypto Course] LFSR
WEI CHIEH CHAO
Ch11 教學
Ch11 教學
hungchiayang1
Ch5 教學
Ch5 教學
hungchiayang1
Ch6 教學
Ch6 教學
hungchiayang1
Func diff cal_exercise2-3
Func diff cal_exercise2-3
Alisha Smile
Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)
JIANG MING-LI
06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分
Xin Zheng
Ch4 教學
Ch4 教學
hungchiayang1
Ppt 167-173
Ppt 167-173
hungchiayang1
11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分
Xin Zheng
C1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domain
Pei-Che Chang
資料結構-20個經典題型
資料結構-20個經典題型
逸 張
Pseudo Random Code
Pseudo Random Code
Pei-Che Chang
Ppt 1-50
Ppt 1-50
hungchiayang1
Equalization in digital communication
Equalization in digital communication
Pei-Che Chang
Why Copy-Paste is Bad for Your Code
Why Copy-Paste is Bad for Your Code
Geff Henderson Chang
02 P P K Teknologi E M Ternakan Ikan Merin Dalm Kolam
02 P P K Teknologi E M Ternakan Ikan Merin Dalm Kolam
zanua
More Related Content
What's hot
TQC+ 程式語言 Python 03:迴圈
TQC+ 程式語言 Python 03:迴圈
neochen2701
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
Minyi Yan
Ch12 範例
Ch12 範例
hungchiayang1
Ch9 範例
Ch9 範例
hungchiayang1
Ch2 教學
Ch2 教學
hungchiayang1
[Crypto Course] LFSR
[Crypto Course] LFSR
WEI CHIEH CHAO
Ch11 教學
Ch11 教學
hungchiayang1
Ch5 教學
Ch5 教學
hungchiayang1
Ch6 教學
Ch6 教學
hungchiayang1
Func diff cal_exercise2-3
Func diff cal_exercise2-3
Alisha Smile
Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)
JIANG MING-LI
06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分
Xin Zheng
Ch4 教學
Ch4 教學
hungchiayang1
Ppt 167-173
Ppt 167-173
hungchiayang1
11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分
Xin Zheng
C1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domain
Pei-Che Chang
資料結構-20個經典題型
資料結構-20個經典題型
逸 張
Pseudo Random Code
Pseudo Random Code
Pei-Che Chang
Ppt 1-50
Ppt 1-50
hungchiayang1
Equalization in digital communication
Equalization in digital communication
Pei-Che Chang
What's hot
(20)
TQC+ 程式語言 Python 03:迴圈
TQC+ 程式語言 Python 03:迴圈
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
Ch12 範例
Ch12 範例
Ch9 範例
Ch9 範例
Ch2 教學
Ch2 教學
[Crypto Course] LFSR
[Crypto Course] LFSR
Ch11 教學
Ch11 教學
Ch5 教學
Ch5 教學
Ch6 教學
Ch6 教學
Func diff cal_exercise2-3
Func diff cal_exercise2-3
Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)
06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分
Ch4 教學
Ch4 教學
Ppt 167-173
Ppt 167-173
11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分
C1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domain
資料結構-20個經典題型
資料結構-20個經典題型
Pseudo Random Code
Pseudo Random Code
Ppt 1-50
Ppt 1-50
Equalization in digital communication
Equalization in digital communication
Viewers also liked
Why Copy-Paste is Bad for Your Code
Why Copy-Paste is Bad for Your Code
Geff Henderson Chang
02 P P K Teknologi E M Ternakan Ikan Merin Dalm Kolam
02 P P K Teknologi E M Ternakan Ikan Merin Dalm Kolam
zanua
How to shoot great photo and video
How to shoot great photo and video
Marc Maxson / GlobalGiving
T E X T L I N G U I S T I C S
T E X T L I N G U I S T I C S
zaynzz
Am I Qualified To Be A Licensed Counselor
Am I Qualified To Be A Licensed Counselor
dsashere
Ell Kids Pictures
Ell Kids Pictures
camillalopez
Google AppEngine Has Gone StackOverflow
Google AppEngine Has Gone StackOverflow
Geff Henderson Chang
How to post your project on GlobalGiving
How to post your project on GlobalGiving
Marc Maxson / GlobalGiving
Obama pecha kucha
Obama pecha kucha
Marc Maxson / GlobalGiving
Write awesome personalized donor thank you emails using GlobalGiving and Face...
Write awesome personalized donor thank you emails using GlobalGiving and Face...
Marc Maxson / GlobalGiving
DB Replication With Rails
DB Replication With Rails
schoefmax
Ushahidi in action worldwide
Ushahidi in action worldwide
Marc Maxson / GlobalGiving
What you can do In WatiR
What you can do In WatiR
Wesley Chen
Version Control and Continuous Integration
Version Control and Continuous Integration
Geff Henderson Chang
GlobalGiving :- an Agile approach to the Japan Earthquake Disaster, and inter...
GlobalGiving :- an Agile approach to the Japan Earthquake Disaster, and inter...
Marc Maxson / GlobalGiving
About The Givers At Global Giving
About The Givers At Global Giving
Marc Maxson / GlobalGiving
Idea webinar-oct-25-2011
Idea webinar-oct-25-2011
Marc Maxson / GlobalGiving
Promise Power
Promise Power
Marc Maxson / GlobalGiving
Caching with Varnish
Caching with Varnish
schoefmax
Viewers also liked
(19)
Why Copy-Paste is Bad for Your Code
Why Copy-Paste is Bad for Your Code
02 P P K Teknologi E M Ternakan Ikan Merin Dalm Kolam
02 P P K Teknologi E M Ternakan Ikan Merin Dalm Kolam
How to shoot great photo and video
How to shoot great photo and video
T E X T L I N G U I S T I C S
T E X T L I N G U I S T I C S
Am I Qualified To Be A Licensed Counselor
Am I Qualified To Be A Licensed Counselor
Ell Kids Pictures
Ell Kids Pictures
Google AppEngine Has Gone StackOverflow
Google AppEngine Has Gone StackOverflow
How to post your project on GlobalGiving
How to post your project on GlobalGiving
Obama pecha kucha
Obama pecha kucha
Write awesome personalized donor thank you emails using GlobalGiving and Face...
Write awesome personalized donor thank you emails using GlobalGiving and Face...
DB Replication With Rails
DB Replication With Rails
Ushahidi in action worldwide
Ushahidi in action worldwide
What you can do In WatiR
What you can do In WatiR
Version Control and Continuous Integration
Version Control and Continuous Integration
GlobalGiving :- an Agile approach to the Japan Earthquake Disaster, and inter...
GlobalGiving :- an Agile approach to the Japan Earthquake Disaster, and inter...
About The Givers At Global Giving
About The Givers At Global Giving
Idea webinar-oct-25-2011
Idea webinar-oct-25-2011
Promise Power
Promise Power
Caching with Varnish
Caching with Varnish
Similar to 10种排序简介
Num py basic(1) - v01
Num py basic(1) - v01
ssuser5e7722
Ch11
Ch11
Alisha Smile
第3章 离散系统的时域分析
第3章 离散系统的时域分析
reader520
Num py basic(2) - v01
Num py basic(2) - v01
ssuser5e7722
Ch12
Ch12
Alisha Smile
Ch4
Ch4
Alisha Smile
sorting
sorting
feifeiheipi
人机对弈编程概述
人机对弈编程概述
勇浩 赖
Similar to 10种排序简介
(8)
Num py basic(1) - v01
Num py basic(1) - v01
Ch11
Ch11
第3章 离散系统的时域分析
第3章 离散系统的时域分析
Num py basic(2) - v01
Num py basic(2) - v01
Ch12
Ch12
Ch4
Ch4
sorting
sorting
人机对弈编程概述
人机对弈编程概述
10种排序简介
1.
十种常用的排序方法 1. 冒泡排序(不是最佳算法) 2. 选择排序(偶尔是最佳算法) 3.
插入排序(不是最佳算法) 4. SHELL 排序(非最佳算法) 5. 归并排序(有时是最佳算法) 6. 快速排序(有时是最佳算法) 7. 堆排序(不是最佳算法) 8. 拓扑排序 9. 锦标赛排序 10. 基数排序(最佳算法)
2.
一. 冒泡排序 1. 概念
依次比较相邻的两个数,将小数放在前面,大数放在后 面。 2. 实例: 假设要排序的数组是:[49, 38, 65, 97,76, 13,27] 第一步:[38, 49, 65, 76, 13, 27, 97] 第二步:[38, 49, 65, 13, 27, 76, 97] 第三步:[38, 49, 13, 27, 65, 76, 97] 第四步:[38, 13, 27, 49, 65, 76, 97] 第五步:[13, 27, 38, 49, 65, 76, 97] 第六步:[13, 27, 38, 49, 65, 76, 97]
3.
冒泡排序性能分析 1. 冒泡排序的复杂度
若记录序列的初始状态为"正序",则冒泡排序过程 只需进行一趟排序,在排序过程中只需进行n-1次比 较,且不移动记录;反之,若记录序列的初始状态 为"逆序",则需进行n(n-1)/2次比较和记录移动。 因此冒泡排序总的时间复杂度为O(n*n)。 2. 冒泡排序是稳定性的算法 不稳定的算法与稳定的算法在某些条件下可以 转化。 如果Ai = Aj, Ai原来在Aj前,排序后Ai还是要在Aj 位置前,那这个算法就是稳定的 3. 优化后的名称:鸡尾酒排序,梳排序(Comb sort)
4.
冒泡排序问题 请给下面数组用冒泡排序方法排序 [100, 27, 93,
87, 128, 40, 29, 18, 2, 2]
5.
二. 选择排序 1.
概念 每一趟从待排序的数据元素中选出最小(或最大)的一 个元素,顺序放在已排好序的数列的最后,直到全部待 排序的数据元素排完。常见的选择排序细分为简单选择 排序、树形选择排序(锦标赛排序)、堆排序 2. 举例 初始关键字 [49 38 65 97 76 13 27 49] 第一趟排序后 13 [38 65 97 76 49 27 49] 第二趟排序后 13 27 [65 97 76 49 38 49] 第三趟排序后 13 27 38 [97 76 49 65 49] 第四趟排序后 13 27 38 49 [76 97 65 49 ] 第五趟排序后 13 27 38 49 49 [97 65 76] 第六趟排序后 13 27 38 49 49 65 [97 76] 第七趟排序后 13 27 38 49 49 65 76 [97]
6.
选择排序性能分析 1. 复杂度
比较次数与关键字的初始状态无关,总的比 较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2。 交换次 数O(n),最好情况是,已经有序,交换0次;最 坏情况是,逆序,交换n-1次。 交换次数比冒 泡排序少多了,由于交换所需CPU时间比比 较所需的CPU时间多,n值较小时,选择排序 比冒泡排序快。复杂度O(n^2) 2. 选择排序是不稳定的排序方法,比喻: [5 8 5 2 9]
7.
选择排序问题 请用选择排序方法为下面数组排序 [100, 27, 93,
87, 128, 40, 29, 18, 2, 2]
8.
三. 插入排序 1. 概念
将数列分为已有序和无序两个部分,每次将无 序数列的第一个元素与有序数列的元素从后往 前逐个进行比较,找出插入位置。 2. 举例 初始关键字 [49 38 65 97 76 13 27 49] 第一趟排序后:{38, 49}, [65 97 76 13 27 49] 第二趟排序后:{38, 49, 65}, [97, 76, 13, 27, 49] 第三趟排序后:{38, 49, 65, 97} [76, 13, 27, 49] 第四趟排序后:{38, 49, 65, 76, 97} [13, 27, 49] 第五趟排序后:{13, 38, 49, 65, 76, 97} [27, 49] …
9.
插入排序性能分析 1. 复杂度
最好情况就是,序列已经是升序排列了, 在这种情况下,需要进行的比较操作需(n- 1)次即可。最坏情况就是,序列是降序排 列,那么此时需要进行的比较共有n(n-1)/2 次。插入排序算法的时间复杂度为O(n^2) 2. 插入排序是稳定的排序方法 3. 优化后的名称: 二分插入排序,链表插入排序,希尔排序
10.
插入排序问题 用插入排序方法给数组排序: [100, 27, 93,
87, 128, 40, 29, 18, 2, 2]
11.
四. 快速排序 1. 概念
首先任意选取数列一个数据(通常选用第一个数据) 作为关键数据,然后将数列元素从后向前与之比较, 所有比它小的数都放到它前面,所有比它大的数都 放到它后面 2. 举例 初始关键字 [49 38 65 97 76 13 27 49] 第一次排序后:[27], 38, 65, 97, 76, 13, {49}, [49] 第二次排序后: [27, 38], {49}, 97, 76, 13, [65, 49] 第三次排序后: [27, 38, 13], 97, 76, {49} [65, 49] 第四次排序后: [27, 38, 13], {49}, 76, [97, 65, 49] 第五次排序后: [27, 38, 13], {49}, [76, 97, 65, 49] …
12.
快速排序性能分析 1. 复杂度
算法的最坏情况运行时间为θ(n^2),且最 坏情况发生在每次划分过程产生的两个区间 分别包含n-1个元素和1个元素的时候。平均 复杂度为: O(nlogn) 2. 快速排序是不稳定的排序方法 比喻: 5 3 3 4 3 8 9 10 11 3. 快速排序算法的优化算法 随机化快排,平衡快排,外部快排,三路基 数快排
13.
快速排序考题 应用快速排序算法为数组排序 [100, 27,
93, 87, 128, 40, 29, 18, 2, 2]
14.
五.归并排序 1. 概念
把待排序序列分为若干个子序列,每个子 序列是有序的。然后再把有序子序列合并 为整体有序序列。 2. 举例 初始: {6,202,100,301,38,8,1} 第一次: [6 202 ] [ 100 301] [ 8 38] [ 1 ] 第二次: [ 6 100 202 301 ] [ 1 8 38 ] 第三次: [ 1 6 8 38 100 202 301 ]
15.
归并排序性能 1. 复杂度:
时间复杂度O(nlogn),空间复杂度O(n) 2. 归并排序是稳定
16.
归并排序考题 请用归并排序方法排序以下数列 [100, 27, 93,
87, 128, 40, 29, 18, 2, 2]
17.
六. 基数排序 1.
概念 基数排序是按照低位先排序,然后收集;再按照高位排序, 然后再收集;依次类推,直到最高位。又称“桶子法” 2. 举例 排序:[49 38 65 97 76 13 27 49] 个位:0(), 1(), 2(), 3(13), 4(), 5(65), 6(76), 7(97, 27), 8(38), 9(49, 49) 得到序列: 13, 65, 76, 97, 27, 38, 49, 49 十位:0(), 1(13), 2(27), 3(38), 4(49, 49), 5(), 6(65), 7(76), 8(), 9(97) 最终的排序结果为: 13, 27, 38, 49, 49, 65, 76, 97
18.
基数排序性能 1. 时间复杂度为Ω(n·log n),
空间复杂度 为 O(k·n),其中n是排序元素个数,k是数 字位数 2. 基数排序是稳定的排序方法
19.
基数排序方法考题 请用基数排序方法排序以下数列 [100, 27, 93,
87, 128, 40, 29, 18, 2, 2]
20.
七. 希尔(Shell)排序 1. 概念
通过将比较的全部元素分为几个区域来提升插入 排序的性能。这样可以让一个元素可以一次性地 朝最终位置前进一大步。然后算法再取越来越小 的步长进行排序,算法的最后一步就是普通的插 入排序,但是到了这步,需排序的数据几乎是已 排好的了(此时插入排序较快), 2. 步长取值 已知的最好步长序列由Marcin Ciura设计(1,4, 10,23,57,132,301,701,1750,…) 另一个在大数组中表现优异的步长序列是(斐波 那契数列除去0和1将剩余的数以黄金分割比的两 倍的幂进行运算得到的数列)
21.
3. 举例 举例 [49
38 65 97 76 13 27 49,],取步长为4 [49, 38, 65, 97] [76, 13, 27, 49] 上面的序列可以看做一个矩阵,对列进行插入排序,得到 [49, 13, 27, 49] [76, 38, 65, 97] 横向读取,得到第一次排序结果: 49, 13, 27, 49, 38, 65, 97, 76 第二次取步长为2, 得到 [49, 13] [27, 49] [38, 65] [97, 76] 再对列进行插入排序,然后横向取值,得到[27, 13, 38, 49,49, 65, 97, 76] 第三次取步长为1,实际上就是插入排序了
22.
希尔排序性能 1. 复杂度
希尔排序是按照不同步长对元素进行插入排序, 当刚开始元素很无序的时候,步长最大,所以插 入排序的元素个数很少,速度很快;当元素基本 有序了,步长很小, 插入排序对于有序的序列效 率很高。所以,希尔排序的时间复杂度会比o(n^2) 好一些, 复杂度为O(n log2 n)。这比最好的比较算 法的O(n log n)要差一些 2. 稳定性 一次插入排序是稳定的,不会改变相同元 素的相 对顺序,但在不同的插入排序过程中,相同的元 素可能在各自的插入排序中移动,最后其稳定性 就会被打乱,所以shell排序是不稳定的。
23.
希尔排序举例 请用希尔排序为数列排序 [100, 27, 93,
87, 128, 40, 29, 18, 2, 2]
24.
第八. 堆排序(Heapsort) 1. 概念
利用堆这种数据结构所设计的一种排序算法。 堆是一个近似完全二叉树的结构,并同时满足 堆性质:即子结点的键值或索引总是小于(或 者大于)它的父节点 Q:(10,15,56,25,30,70)和(70,56, 30,25,15,10)是堆吗? 大根堆有个显著特征就是根节点最大,每次都 可以挑出最大的 小根堆有个显著特征就是根节点最小,每次可 以挑出最小的,然后进行排序
25.
堆排序举例 用大根堆对数组排序:[49 38 65
97 76 13 27 49], 排列出来的顺序是上面?
26.
堆算法性能 1. 复杂度
堆排序的平均时间复杂度为0(nlogn),空间 复杂度为0(1) 2.是不稳定的排序方法
27.
九. 锦标赛排序 概念 首先对n个记录的关键字进行两两比较,
然后在n/2个较小者之间再进行两两比较, 如此重复,直至选出最小的记录为止。循 环这样的操作,最后得到一个序列
28.
十. 拓扑排序 1. 概念
对一个有向无环图(Directed Acyclic Graph简称 DAG)G进行拓扑排序,是将G中所有顶点排成一 个线性序列,使得图中任意一对顶点u和v,若<u, v> ∈E(G),则u在线性序列中出现在v之前。 2. 拓扑方法: 1)从有向图中选择一个没有前驱(即入度为0)的顶 点并且输出它. 2) 从网中删去该顶点,并且删去从该顶点发出的 全部有向边. 3)重复上述两步,直到剩余的网中不再存在没有前 趋的顶点为止.
29.
算法使用 以上十种算法都是最基础的算法,后来大 量的算法都是从中衍生过来的。不能简单 的说某种算法最好,重要的是用在最恰当 的地方。很多时候,这些算法要相互组合 使用,提高运算速率,降低计算机CPU消耗 量
Download now