TA的每日心情 | 慵懒 2016-4-21 12:07 |
|---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
这个属于 算法啦!好东西* D w1 P* d6 o2 D5 z
$ K9 D2 K5 ?9 t
1. 排序的基本概念
5 e" t I# X% z' W4 D 假定排序对象为若干记录组成的一个集合,每个记录包含若干个字段,选取其中一个或多个字段为排序码。我们暂时假设排序码的类型为整数类型。' m3 t3 h0 q% x$ ?: w H5 |
“正序”序列:待排序序列正好符合排序要求。
, t2 N+ w, \; r “逆序”序列:把待排序序列逆转过来,正好符合排序要求。
' j' H# ]* r" z6 g( y0 m 排序的稳定性:排序码相同的记录经过排序后相对次序保持不变,则这种排序方法称为是“稳定的”,否则是不稳定的。' c) Z6 y k6 o* U3 ^& S
2. 分类
P, F1 X6 i& n. N/ t 按排序中涉及的存储器不同' {/ b; h9 A: h# a# n0 Z
1)内部排序是把待排数据元素全部调入内存中进行的排序。
4 i+ ? \; G; ?/ i 2)外部排序是因数量太大,把数据元素分批导入内存,排好序后再分批导出到磁盘和磁带外存介质上的排序方法。
; N( ^+ v! U( N9 N& z$ O: S* F+ f 按照排序方法分类
9 G6 I7 _, p# `- m2 ]8 Q% g 1)插入排序:直接插入、二分法插入、表插入、Shell排序0 R1 L3 n3 h2 e: }* B1 q
2)选择排序:直接选择、堆排序
% c6 w P2 b: Q7 p 3)交换排序:冒泡排序、快速排序
5 c, b+ x; ^, i a! M; R; ^* C1 ^ 4)分配排序:基数排序6 W3 V% l* d; y6 x! M1 g
5)归并排序:二路归并排序
2 r' ?4 w' K [# \5 `& J3、排序算法的评价; \8 ?$ E. J. p; V [
1)时间复杂度:分析记录关键字的比较次数和记录的移动次数 (重要评价标准)
% n, b1 p9 `& V7 i) ?" y1 e& | 2)空间复杂度:算法中使用的内存辅助空间
4 z3 `0 ~& o! c) E 3)排序的稳定性* K8 X$ z4 K+ @# z9 Z
4)算法本身的复杂程度
: w2 r& L0 Y& Y. m1 @' x# @0 `* Z: K- Y- B6 k n9 I' `% @! C
一、选择排序与堆排序+ g1 ~- Q) o! ?' m
1.直接选择排序0 i8 H. \7 R, I/ I/ r$ V
思路比较简单:即依次从剩余记录中选取最小的0 d' o! b8 Q( S5 Q4 `% h+ G6 W! [
2.堆排序5 Y& D2 F) ]' Z5 c
- B& r; u. X4 `( H) J 利用堆的思想,建立一个最大堆,把堆顶的元素(最大值)拿掉,再重新建堆,依次递归 |
|