




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、排序排序算法算法排序排序例:对例:对1、9、6、11、3这这5个数字个数字进行从小到大排序?进行从小到大排序?结果:结果:1、3、6、9、11思考:如何编程让计算机完成排思考:如何编程让计算机完成排序?序?排序算法的种类: 1、冒泡排序(Bubble Sort) 2、选择排序(Selection Sort) 3、插入排序(Insertion Sort) 4、希尔排序(Shell Sort) 5、归并排序(Merge Sort) 6、快速排序(Quick Sort) 7、堆排序(Heap Sort) 8、计数排序(Counting Sort) 9、桶排序(Bucket Sort) 10、基数排序
2、(Radix Sort)1、冒泡排序 原理:原理:重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。1、冒泡排序例:对例:对1、9、6、11、3这这5个数字进个数字进行从小到大排序?行从小到大排序?冒泡排序:(1)1、6、9、11、3(2)1、6、9、3、11(3)1、6、3、9、11(4)1、3、6、9、111、冒泡排序 MATLAB程序实现:X=1,9,6,11,3;a=size(X,2);for i=1:a for j=1:a-1 y=X(j); z=X(j+1); if X(j)X(
3、j+1) X(j)=z; X(j+1)=y; end end Xend2、选择排序 原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。2、选择排序例:对例:对1、9、6、11、3这这5个数字进个数字进行从小到大排序?行从小到大排序?选择排序:(1)1、9、6、11、3(2)1、3、6、11、9(3)1、3、6、11、9(4)1、3、6、9、112、选择排序 MATLAB程序实现:X=1,9,6,11,3,12,18;a=size(X,2);for i=1:a x=X
4、(i:a); y=min(x); b=find(X=y); X(b)=X(i); X(i)=y; Xend3、插入排序 原理:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。3、插入排序 例:对例:对1、9、6、11、3这这5个数字进行从小到大个数字进行从小到大排序?排序?选择排序:(1)1、9、6、11、3(2)1、6、9、11、3(3)1、6、9、11、3(4)1、3、6、9、113、插入排序 MATLAB程序实现: X=1,9,6,11,3,12,18; a=size(X,2); for j=2:a key=X(j); i=j-1; while i0 &
5、amp; X(i)key X(i+1)=X(i); i=i-1; end X(i+1)=key; X end4、希尔排序 插入排序当原始数据比较有序时,效率非常高。但当原始数据无序时,效率比较低。 希尔排序是对插入排序的改进希尔排序是对插入排序的改进。 希尔排序目标:在进行排序之前让数据变得更为有序,提高排序效率。4、希尔排序 步骤:将待排序列划分为若干组,在每一组内进行插入排序,以使整个序列基本有序,然后再对整个序列进行插入排序。4、希尔排序 例:利用希尔方法对592、401、874、141、348、72、911、887、820、283进行排序。5、归并排序 基本思想:将两个或两个以上的有序
6、子序列“归并”为一个有序序列。 在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的有序子序列归并为一个有序序列。5、归并排序v如何进行两路归并? 将两个有序表的元素进行比较,小者复制到目标表中。5、归并排序52435 74222()192330()ij()k51923243035 74222两路归并动画演示ikjkjkikjksmtm+15、归并排序 具体实现步骤 假设初始序列含有n个记录,则可看成n个有序的子序列,每个子序列长度为1。然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,如此重复,直至得到一个长度为n的有序序列为止。5、归并排序初始时:初始时: 49 3
7、8 65 97 76 13 27初始关键字:初始关键字: 49 38 65 97 76 13 27一趟归并后:一趟归并后: 38 49 65 97 13 76 27二趟归并后:二趟归并后: 38 49 65 97 13 27 76三趟归并后:三趟归并后: 13 27 38 49 65 76 976、快速排序思考:利用冒泡排序将38、49、65、13、27完成排序需要几步?解:(1)38 49 65 13 27 (2)38 49 65 13 27 (3)38 49 13 65 27 (4)38 49 13 27 65 (5)38 49 13 27 65 (6)38 13 49 27 656、快速
8、排序 (7)38 13 27 49 65 (8)38 13 27 49 65 (9)13 38 27 49 65 (10)13 27 38 49 65冒泡算法最少需要冒泡算法最少需要10步。步。能否用更少的步数完成排序?能否用更少的步数完成排序?6、快速排序 基本思想:基本思想:(1)从数列中挑出一个元素,称为 “基准”(2)所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(3)对上步分成的两端无序数组重复(1)和(2)步操作,直到完成排序。6、快速排序例:利用快速排序将38、49、65、13、27完成排序?(1)选取38为基准,将大于38的值放右边,小的放左边:(2)在
9、左边数组选取13为基准,重复上步(3)在右边数组选取49为基准,重复上快速排序 MATLAB实现 X=1,9,6,11,3; Sta=X(3); % 基准 X1=X(XSta); Sta1=X1(1); X11=X1(X1Sta1); Sta2=X2(1); X21=X2(X2Sta2); X=X11 Sta1 X12 Sta X21 Sta2 X227、堆排序堆的定义:堆的定义:若若n个元素的序列个元素的序列a1 a2 an 满足满足则分别称该序列则分别称该序列a1 a2 an为为和和7、堆排序 例: 下面序列为堆,对应的完全二叉树分别为:98 77 35 62 5
10、5 14 35 4814 48 35 62 55 98 35 779877356255143548(a) 一个大根堆1448356255983577(b) 一个小根堆9877356255143548(a) 一个大根堆1448356255983577(b) 一个小根堆7、堆排序建堆建堆 在实际应用中,大多数数据构建的二叉树并不是堆,比如:解决方案:调整次序,构建大根堆或小根堆。7、堆排序建堆建堆 例: 7、堆排序建堆建堆例:将序列28,25,16,36,18,32构建成大根堆7、堆排序堆排序原理堆排序原理 若若在输出堆顶的最小值(最大值)后,使得剩在输出堆顶的最小值(最大值)后,使得剩余余n-1
11、个元素的序列重又建成一个堆,则得到个元素的序列重又建成一个堆,则得到n个个元素的次小值(次大值)元素的次小值(次大值)如此反复,便能得如此反复,便能得到一个有序序列,这个过程称之为到一个有序序列,这个过程称之为。问题:如何在输出堆顶元素后,调整剩余问题:如何在输出堆顶元素后,调整剩余元素为一个新的堆?元素为一个新的堆?7、堆排序问题:如何在输出堆顶元素后,调整问题:如何在输出堆顶元素后,调整剩余元素为一个新的堆?剩余元素为一个新的堆?解决方案:输出堆顶元素之后,以堆解决方案:输出堆顶元素之后,以堆中最后一个元素替代中最后一个元素替代之,然后重新构之,然后重新构建堆。建堆。7、堆排序 例题:用堆排序将序列20,60,26,30,36,10调整为递增序列。(1)构建小根堆7、堆排序(2)提取堆顶10,并用最后一个元素替换堆顶,重新构建小根堆。7、堆排序(3)提取堆顶20,并用最后一个元素替换堆顶,重新构建小根堆。7、堆排序(4)提取堆顶26,并用最后一个元素替换堆顶,重新构建小根堆。7、堆排序(5)提取堆顶30,并用最后一个元素替换堆顶,重新构建小根堆。(6)提取堆顶36,剩余一个数60,提取60。8、计数排序 排序原理:排序原理:利用哈希的方法,将每个数据出现的次数都统计下来。哈希表是顺序的,所以我们统计完后直接遍历哈希表,将数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB31/T 680.3-2017城市公共用水定额及其计算方法第3部分:游泳池
- DB31/T 229-2011矿物油型有机热载体
- DB31/T 1256-2020消毒产品卫生安全评价信息数据集
- DB31/T 1193-2019山鸡养殖技术规范
- CAB 1027-2014汽车罩
- 高中三年如何规划:从高一到高三的全程指南
- 2024年工艺气体压缩机资金筹措计划书代可行性研究报告
- 海外医疗记录租赁与安全保障合同
- 跨境电商物流配送车队委托国际化经营管理合同
- 新能源汽车电池租赁保险理赔及责任追溯协议
- DB32-T 5079-2025 城镇供水水表安装及维护技术规程
- 种畜禽场管理制度类
- 雷雨剧本文件完整版电子书下载
- 外墙保温施工考核试卷
- 除颤仪使用的试题及答案
- 储料仓施工方案
- 风机叶片故障诊断-深度研究
- 新版统编版七年级下册道德与法治四单元课件 11.1 法不可违
- 烧烤店员工培训
- 2025年全球及中国智能艾灸服务机器人行业头部企业市场占有率及排名调研报告
- 大学生创新创业教育课件
评论
0/150
提交评论