《冒泡排序和选择排序课件.ppt》由会员分享,可在线阅读,更多相关《冒泡排序和选择排序课件.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、简单排序算法简单排序算法-冒泡排序冒泡排序西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 1三个整数排序三个整数排序开始开始输入三个整数输入三个整数a,b,cab?Nac?YYY交换交换a和和b的值的值交换交换a和和c的值的值交换交换b和和c的值的值Nbc?N输出输出a,b,c 的值的值结束结束算法:三个整数排序算法:三个整数排序BEGINinput a,b,c;/*输入三个整数输入三个整数*/if ab then交换交换a和和b的值的值;if acthen交换交换a和和c的值的值;if
2、bcthen交换交换b和和c的值的值;print a,b,c;END西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 2五个整数排序五个整数排序算法:五个整数排序算法:五个整数排序BEGINinput a,b,c,d,e;/*输入五个整数输入五个整数*/if ab then交换交换a和和b的值的值;if acthen交换交换a和和c的值的值;if ad then交换交换a和和d的值的值;if aethen交换交换a和和e的值的值;/*找出最大数并放在找出最大数并放在 a中中*/算法:三个整数
3、排序算法:三个整数排序BEGINinput a,b,c;/*输入三个整数输入三个整数*/if ab then交换交换a和和b的值的值;if acthen交换交换a和和c的值的值;if bcthen交换交换b和和c的值的值;print a,b,c;END推广至推广至5个个整数排序整数排序if bcthen交换交换b和和c的值的值;if bdthen交换交换b和和d的值的值;if bethen交换交换b和和e的值的值;/*找出第二大的数并放在找出第二大的数并放在 b中中*/if cdthen交换交换c和和d的值的值;if cethen交换交换c和和e的值的值;/*找出第三大的数并放在找出第三大的数
4、并放在 c中中*/if dethen交换交换d和和e的值的值;/*找出第四大的数并放在找出第四大的数并放在 d中中*/print a,b,c,d,e;END3西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 排序时数据集中存放在一段空间中排序时数据集中存放在一段空间中?在前面的排序算法中,存放数据的位置在前面的排序算法中,存放数据的位置(以以a a、b b、c c、d d、e e表示表示)之间没有联系之间没有联系下面,约定排序时数据集中存放在一段存储空间中下面,约定排序时数据集中存放在一段存
5、储空间中例如:下面的例如:下面的7 7个整数连续地存放在位置个整数连续地存放在位置1位置位置7中中12345674318913557434西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 简单排序方法简单排序方法?简单排序方法有多种,这里我们介绍冒泡简单排序方法有多种,这里我们介绍冒泡(起泡起泡)排序法。排序法。冒泡排序法冒泡排序法(bubble sort)(bubble sort)的基本思想是的基本思想是:通过对相邻元素的比较和通过对相邻元素的比较和交换,使全部记录排列有序。交换,使全部记
6、录排列有序。冒泡排序的过程:对每两个相邻的元素进行比较,若为逆序,则将冒泡排序的过程:对每两个相邻的元素进行比较,若为逆序,则将两者交换,这样的操作反复进行,直至全部记录都比较、交换完毕两者交换,这样的操作反复进行,直至全部记录都比较、交换完毕为止。如此经过一趟冒泡排序之后,就将关键字最大为止。如此经过一趟冒泡排序之后,就将关键字最大(或最小或最小)的元的元素安排在最后一个素安排在最后一个(或第一个或第一个)元素的位置上。然后,对后元素的位置上。然后,对后n-1n-1个元个元素重复进行同样的操作,则将具有次大素重复进行同样的操作,则将具有次大(或次小或次小)元素安排在倒数元素安排在倒数(或或正
7、数正数)第二个元素的位置上。重复以上过程,直至没有元素需要交换第二个元素的位置上。重复以上过程,直至没有元素需要交换时为止。至此,整个序列的记录按关键字由小到大的顺序排列完毕。时为止。至此,整个序列的记录按关键字由小到大的顺序排列完毕。?西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 5冒泡排序方法冒泡排序方法?以以7个元素为例说明冒泡排序个元素为例说明冒泡排序位置位置1位置位置7的元素初始排列如下所示的元素初始排列如下所示1234567431891355743西安电子科技大学计算机学院-
8、School of Computer Science&Engineering,Xidian University,China 6冒泡排序方法冒泡排序方法?第一步:令第一步:令位置位置1和位置和位置2的元素比较,若位置的元素比较,若位置1的元素大,则交换的元素大,则交换第二步:令第二步:令位置位置2和位置和位置3的元素比较,若位置的元素比较,若位置2的元素大,则交换的元素大,则交换1234567431891355743交换交换1234567184391355743交换交换1234567189431355743西安电子科技大学计算机学院-School of Computer Science&Eng
9、ineering,Xidian University,China 7冒泡排序方法冒泡排序方法?第三步:令第三步:令位置位置3和位置和位置4的元素比较,若位置的元素比较,若位置3的元素大,则交换的元素大,则交换第四步:令第四步:令位置位置4和位置和位置5的元素比较,若位置的元素比较,若位置4的元素大,则交换的元素大,则交换第五步:令第五步:令位置位置5和位置和位置6的元素比较,若位置的元素比较,若位置5的元素大,则交换的元素大,则交换1234567189431355743123456718913435574312交换交换189134375543交换交换34567西安电子科技大学计算机学院-Sch
10、ool of Computer Science&Engineering,Xidian University,China 8冒泡排序方法冒泡排序方法?第六步:令第六步:令位置位置6和位置和位置7的元素比较,若位置的元素比较,若位置6的元素大,则交换的元素大,则交换1234567?189134375543最大元素被交换到最后一个位置最大元素被交换到最后一个位置(位置位置7)下一趟则需将次大元素交换到倒数第二个位置下一趟则需将次大元素交换到倒数第二个位置123交换交换1891343743554567西安电子科技大学计算机学院-School of Computer Science&Engineerin
11、g,Xidian University,China 9冒泡排序方法冒泡排序方法1234567189134374355123456791813437435512345679131843743551234567913187434355?次大元素被交换到倒数第二个位置次大元素被交换到倒数第二个位置(位置位置6)下一趟则需将第三大元素交换到倒数第三个位置,依此类推下一趟则需将第三大元素交换到倒数第三个位置,依此类推10西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 冒泡排序方法冒泡排序方法?以以7
12、个元素为例说明冒泡排序,存放每个元素的位置以序号进行标个元素为例说明冒泡排序,存放每个元素的位置以序号进行标记记经过六趟冒泡排序后,位置经过六趟冒泡排序后,位置1位置位置7中的元素排列如下所示中的元素排列如下所示123456743189135574312排序排序79131843435534567西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 11冒泡排序算法冒泡排序算法?7个元素进行冒泡排序时,个元素进行冒泡排序时,需要六趟,用需要六趟,用i表示趟数表示趟数开始开始i 1i=6?NY结束结
13、束进行第进行第i趟冒泡排序趟冒泡排序i i+1西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 12冒泡排序算法冒泡排序算法?7个元素进行冒泡排序时,个元素进行冒泡排序时,需要六趟,用需要六趟,用i表示趟数表示趟数j表示元素的位置表示元素的位置aj与与aj+1是相邻的元素是相邻的元素开始开始i 1i=6?NYj 1jaj+1则交换则交换i i+1西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,Chi
14、na 13冒泡排序算法冒泡排序算法?int a7;开始开始for(i=0;i=5;i+)for(j=0;j=5-i;j+)i 1i aj+1)temp=aj;aj=aj+1;aj+1=temp;Yj 1jaj+1则交换则交换i i+1西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 14简单选择排序简单选择排序西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 15选择排序方法选择排序方法?
15、以以7个元素为例说明选择排序个元素为例说明选择排序位置位置1位置位置7的元素初始排列如下所示的元素初始排列如下所示1234567431891355743西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 16选择排序方法选择排序方法?第一趟:从第一趟:从7个元素中选出最小者,将其换入个元素中选出最小者,将其换入位置位置1,过程为:令,过程为:令min_elem 表示最小元素(初值为位置表示最小元素(初值为位置1的元素),的元素),k为最小元素的为最小元素的位置序号(初值为位置序号(初值为1),
16、逐一比较,找出最小元素及其位置),逐一比较,找出最小元素及其位置1234567431891355743位置位置6的元素最小的元素最小交换交换1234567743913554343西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 17选择排序方法选择排序方法?第二趟:从第二趟:从6个元素中选出最小者,将其换入个元素中选出最小者,将其换入位置位置2,过程为:令,过程为:令min_elem 表示最小元素(初值为位置表示最小元素(初值为位置2的元素),的元素),k为最小元素的为最小元素的位置序号(初
17、值为位置序号(初值为2),逐一比较,找出最小元素及其位置),逐一比较,找出最小元素及其位置1234567718913554343位置位置3的元素最小的元素最小交换交换1234567791813554343西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 18选择排序方法选择排序方法?第三趟:从第三趟:从5个元素中选出最小者,将其换入个元素中选出最小者,将其换入位置位置3,过程为:令,过程为:令min_elem 表示最小元素(初值为位置表示最小元素(初值为位置3的元素),的元素),k为最小元素
18、的为最小元素的位置序号(初值为位置序号(初值为3),逐一比较,找出最小元素及其位置),逐一比较,找出最小元素及其位置1234567791813554343位置位置4的元素最小的元素最小交换交换1234567791318554343西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 19选择排序方法选择排序方法?第四趟:从第四趟:从4个元素中选出最小者,将其换入个元素中选出最小者,将其换入位置位置4,过程为:令,过程为:令min_elem 表示最小元素(初值为位置表示最小元素(初值为位置4的元素
19、),的元素),k为最小元素的为最小元素的位置序号(初值为位置序号(初值为4),逐一比较,找出最小元素及其位置),逐一比较,找出最小元素及其位置1234567791318554343位置位置4的元素最小的元素最小交换交换1234567791318554343西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 20选择排序方法选择排序方法?第五趟:从第五趟:从3个元素中选出最小者,将其换入个元素中选出最小者,将其换入位置位置5,过程为:令,过程为:令min_elem 表示最小元素(初值为位置表示最
20、小元素(初值为位置5的元素),的元素),k为最小元素的为最小元素的位置序号(初值为位置序号(初值为5),逐一比较,找出最小元素及其位置),逐一比较,找出最小元素及其位置1234567791318554343位置位置6的元素最小的元素最小交换交换1234567791318435543西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 21选择排序方法选择排序方法?第六趟:从第六趟:从2个元素中选出最小者,将其换入个元素中选出最小者,将其换入位置位置6,过程为:令,过程为:令min_elem 表示
21、最小元素(初值为位置表示最小元素(初值为位置6的元素),的元素),k为最小元素的为最小元素的位置序号(初值为位置序号(初值为6),逐一比较,找出最小元素及其位置),逐一比较,找出最小元素及其位置1234567791318435543位置位置7的元素最小的元素最小交换交换1234567791318434355西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 22选择排序方法选择排序方法?以以7个元素为例,经过个元素为例,经过6趟选择,将元素排列有序趟选择,将元素排列有序123456743189
22、1355743排序排序1234567791318434355西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 23选择排序算法选择排序算法?7个元素进行选择排序时,个元素进行选择排序时,需要六趟,用需要六趟,用i表示趟数表示趟数开始开始i 1i=6?NY结束结束进行第进行第i趟选择排序趟选择排序i i+1西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 24选择排序算法选择排序算法?7个元
23、素进行选择排序时,个元素进行选择排序时,需要六趟,用需要六趟,用i表示趟数表示趟数k表示最小元素的位置表示最小元素的位置i i+1开始开始i 1i=6?N?Yk i,j i+1 j=7?Y比较比较ak和和aj结束结束Nj j+1如果如果ajak则令则令k=j交换交换ak和和aj西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 25选择排序算法选择排序算法?int a7;开始开始for(i=0;i=5;i+)k=i;i 1i=6?Nfor(j=i+1;j aj)k=j;temp=aj;aj=ak;ak=temp;j j+1Yk i,j i+1 j=7?Y如果如果ajak则令则令k=j交换交换ak和和aj比较比较ak和和aj结束结束i i+1N西安电子科技大学计算机学院-School of Computer Science&Engineering,Xidian University,China 26
限制150内