




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、a1排序算法排序算法a2排序排序例:对例:对1、9、6、11、3这这5个数字个数字进行从小到大排序?进行从小到大排序?结果:结果:1、3、6、9、11思考:如何编程让计算机完成排思考:如何编程让计算机完成排序?序?a3排序算法的种类: 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) 1
2、0、基数排序(Radix Sort)a41、冒泡排序 原理:原理:重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。a51、冒泡排序例:对例:对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、11a61、冒泡排序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)
3、; if X(j)X(j+1) X(j)=z; X(j+1)=y; end end Xenda72、选择排序 原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。a82、选择排序例:对例:对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、11a92、选择排序MATLAB程序实现:X=1,9,6,11,3,12,18;a=size(X,
4、2);for i=1:a x=X(i:a); y=min(x); b=find(X=y); X(b)=X(i); X(i)=y; Xenda103、插入排序 原理:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。a113、插入排序例:对例:对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、11a123、插入排序MATLAB程序实现:X=1,9,6,11,3,12,18;a=size(X,2);for j=2:a key=X(j
5、); i=j-1; while i0 & X(i)key X(i+1)=X(i); i=i-1; end X(i+1)=key; Xenda134、希尔排序 插入排序当原始数据比较有序时,效率非常高。但当原始数据无序时,效率比较低。 希尔排序是对插入排序的改进希尔排序是对插入排序的改进。 希尔排序目标:在进行排序之前让数据变得更为有序,提高排序效率。a144、希尔排序 步骤:将待排序列划分为若干组,在每一组内进行插入排序,以使整个序列基本有序,然后再对整个序列进行插入排序。a154、希尔排序 例:利用希尔方法对592、401、874、141、348、72、911、887、820、283进行排序
6、。a165、归并排序 基本思想:将两个或两个以上的有序子序列“归并”为一个有序序列。 在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的有序子序列归并为一个有序序列。a175、归并排序v如何进行两路归并? 将两个有序表的元素进行比较,小者复制到目标表中。a185、归并排序52435 74222()192330()ij()k51923243035 74222两路归并动画演示ikjkjkikjksmtm+1a195、归并排序具体实现步骤 假设初始序列含有n个记录,则可看成n个有序的子序列,每个子序列长度为1。然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,如此重复,直至
7、得到一个长度为n的有序序列为止。a205、归并排序初始时:初始时: 49 38 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 97a216、快速排序思考:利用冒泡排序将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 6
8、5 (5)38 49 13 27 65 (6)38 13 49 27 65a226、快速排序 (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步。步。能否用更少的步数完成排序?能否用更少的步数完成排序?a236、快速排序基本思想:基本思想:(1)从数列中挑出一个元素,称为 “基准”(2)所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(3)对上步分成的两端无序数组重复(1)和(2)步操作,直到完成排序。a246、快速排序例:利用快速排序将38
9、、49、65、13、27完成排序?(1)选取38为基准,将大于38的值放右边,小的放左边:(2)在左边数组选取13为基准,重复上步(3)在右边数组选取49为基准,重复上步1327384965a256、快速排序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 X22a267、堆排序堆的定义:堆的定义:若若n个元素的序列个元素的序列a1 a2 an 满足满足则分别称该序列则分别称该序列a1 a2 a
10、n为为和和a277、堆排序例: 下面序列为堆,对应的完全二叉树分别为: 77 35 62 55 14 35 4814 48 35 62 55 98 35 779877356255 143548(a) 一个大根堆1448356255 983577(b) 一个小根堆9877356255 143548(a) 一个大根堆1448356255 983577(b) 一个小根堆a287、堆排序建堆建堆 在实际应用中,大多数数据构建的二叉树并不是堆,比如:解决方案:调整次序,构建大根堆或小根堆。a297、堆排序建堆建堆 例: a307、堆排序建堆建堆例:将序列28,25,16,36,18,32构建成大根堆a3
11、17、堆排序堆排序原理堆排序原理 若在输出堆顶的最小值(最大值)后,使得剩若在输出堆顶的最小值(最大值)后,使得剩余余n-1个元素的序列重又建成一个堆,则得到个元素的序列重又建成一个堆,则得到n个个元素的次小值(次大值)元素的次小值(次大值)如此反复,便能得如此反复,便能得到一个有序序列,这个过程称之为到一个有序序列,这个过程称之为。问题:如何在输出堆顶元素后,调整剩余问题:如何在输出堆顶元素后,调整剩余元素为一个新的堆?元素为一个新的堆?a327、堆排序问题:如何在输出堆顶元素后,调整问题:如何在输出堆顶元素后,调整剩余元素为一个新的堆?剩余元素为一个新的堆?解决方案:输出堆顶元素之后,以堆
12、解决方案:输出堆顶元素之后,以堆中最后一个元素替代之,然后重新构中最后一个元素替代之,然后重新构建堆。建堆。a337、堆排序例题:用堆排序将序列20,60,26,30,36,10调整为递增序列。(1)构建小根堆a347、堆排序(2)提取堆顶10,并用最后一个元素替换堆顶,重新构建小根堆。a357、堆排序(3)提取堆顶20,并用最后一个元素替换堆顶,重新构建小根堆。a367、堆排序(4)提取堆顶26,并用最后一个元素替换堆顶,重新构建小根堆。a377、堆排序(5)提取堆顶30,并用最后一个元素替换堆顶,重新构建小根堆。(6)提取堆顶36,剩余一个数60,提取60。a388、计数排序 排序原理:排序原理:利用哈希的方法,将每个数据出现的次数都统计下来。哈希表是顺序的,所以我们统计完后直接遍历哈希表,将数据再重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实验室安全教育心得体会
- 2024年水利水电工程考试难点解析与试题及答案
- 2025届平舆县数学三年级第一学期期末监测试题含解析
- 小学一年级成长教育故事案例
- 水利水电工程现场勘察试题及答案
- 提升城市建设项目的试题及答案
- 绿色农业生态农场种植技术合作协议
- 农民农技培训服务协议
- 中级经济师考试的相关政策与法规试题及答案
- 信息技术网络安全知识测试卷
- 闪存存储技术应对大数据挑战
- 科普项目申报书-中国科协
- 食蚜蝇课件完整版
- 主题班会《中国梦我的梦》课件
- 义务教育数学新课程标准选择题题库测试卷精选450题(2022版)含答案
- 古诗词诵读《客至》-统编版高中语文选择性必修下册
- 建筑材料分类整理
- YY/T 0801.2-2010医用气体管道系统终端第2部分:用于麻醉气体净化系统的终端
- GB/T 31349-2014节能量测量和验证技术要求中央空调系统
- 武汉大学管理学全套课件龚丽敏老师版
- 泗洪县国土空间规划近期实施方案
评论
0/150
提交评论