冒泡排序和选择排序 共27页PPT资料

合集下载

C++各类排序算法介绍PPT课件

C++各类排序算法介绍PPT课件

}
r[i]=x;
qksort(r,t,j-1);
2021/2/10
qksort(r,j+1,w);
21
}
– 算法评价 • 时间复杂度 – 最好情况(每次总是选到中间值作枢轴) T(n)=O(nlog2n) – 最坏情况(每次总是选到最小或最大元素 作枢轴)T(n)=O(n² )
T(n)=O(n²)
• 根据“寻找”插入位置的方法不同,插入法可分为:直 插排序、二分插入排序、希尔排序。
• (1) 直接插入排序
– 若将一个未排序的元素L[i]插入到已排序的具有i-1个 元素的序列的适当位置,步骤如下:
• a. 从右向左顺序搜索已排序的序列,若已排序序 列中的元素比L[i]大,则后移一个位置,直至找到 一个元素L[j-1](0≤j-1≤i-1)的关键字值比L[i]的关键 字值小;
• 希尔排序可提高排序速度,因为 – 分组后n值减小,n² 更小,而T(n)=O(n² ),所 以T(n)从总体上看是减小了 – 关键字较小的记录跳跃式前移,在进行最后一 趟增量为1的插入排序时,序列已基本有序
• 增量序列取法 – 无除1以外的公因子 – 最后一个增量值必须为1
2021/2/10
14
关键字小,则可分别对这两部分记录进行排序,以达到 整个序列有序。 关键字通常取第一个记录的值为基准值。
– 排序过程:对r[s……t]中记录进行一趟快速排序,附设两 个指针i和j,设基准值记录rp=r[s],x=rp.key
• 初始时令i=s,j=t
• 首先从j所指位置向前搜索第一个关键字小于x的记录, 并和rp交换
9.3 交换排序
• (0) 基本思想:
– 两两比较待排序的数据元素的关键字,如果发生逆序, 则交换之,直到全部对象都排好序为止。

冒泡排序 ppt课件

冒泡排序 ppt课件

稳定排序
冒泡排序是一种稳定的排序算法 ,相同元素的相对位置不会改变

冒泡排序的缺点
时间复杂度高
冒泡排序的时间复杂度为O(n^2),在数据量大时 效率较低。
易受数据分布影响
如果待排序数据集已经部分有序,冒泡排序的性 能会受到影响。
交换操作频繁
冒泡排序需要多次遍历数据,进行大量的交换操 作。
其他排序算法的比较
01
选择排序
选择排序的时间复杂度也是O(n^2),但它的空间复杂度为O(1),且在
数据量较大时比冒泡排序略快。
02
插入排序
插入排序的时间复杂度同样是O(n^2),但它的空间复杂度也是O(1)。
在数据量较小或部分有序的情况下,插入排序的性能优于冒泡排序。
03
快速排序
快速排序是一种分治算法,其平均时间复杂度为O(nlogn),远优于冒
冒泡排序 PPT 课件
目录
• 冒泡排序简介 • 冒泡排序算法实现 • 冒泡排序的时间复杂度分析 • 冒泡排序的优缺点比较 • 冒泡排序的应用实例 • 总结与展望
01 冒泡排序简介
什么是冒泡排序
冒泡排序是一种简单的排序算法,通过重复地遍历待排序的 序列,比较相邻的两个元素,若它们的顺序错误则交换它们 ,直到没有需要交换的元素为止。
终实现数组的有序排列。由于其算法简单且稳定,冒泡排序在某些场景下是高效的。
冒泡排序在字符串匹配中的应用
总结词
基础、适用
VS
详细描述
在字符串匹配中,冒泡排序可以作为算法 的一部分,用于对字符数组进行排序。通 过将待匹配的字符串与模式串中的字符进 行比较和交换,冒泡排序可以帮助算法更 快地找到匹配项或排除不可能的匹配。尽 管冒泡排序在字符串匹配中的效率不是最 高,但由于其简单易实现,仍被广泛使用 。

选修一高中信息技术-冒泡排序 课件

选修一高中信息技术-冒泡排序 课件

√C、当比较的两个数逆序时, 交换顺序
D、只能比较数据
二、代码实现
for i in range(len(list)-1): for j in range(len(list) - i - 1):
if list[j] > list[j + 1]: list[j],
list[j+1] = list[j+1], list[j]
高中信息技术
数据排序 —冒泡排序
冒泡排序
目录
01 课 前 回 顾 02 代 码 实 现 03 习 题 演 练 04 课 堂 总 结
上 节 课 学 了 什 么

一、课、 前回顾
1、冒泡排序的定义
从前到后(即从下标较小的 元素开始)依次比较相邻元 素的值,若发现逆序则交换 位置,使值较大的元素逐渐
从前移向后部。
2、冒泡排序的过程
从小到大排序
第一次排序
7&g轮排序以后,最大 的数就会浮到最右面; 第二轮排序时,只排到 导数第二个...以此排完。
7<22
正序,保 持不变
同之前规律
第一次排 完
第二次排 完
第二次排序
练一练
下面关于冒泡排序说法正确的是()
A、只能从小到大排序
B、可以一次比较三个以上的元素
解题步骤一
If a(j)>a(j+1)
解题步骤二
50,31,18,42,37,23
18,31,23,37,42, 50
从小到大排序,现在确定最大
i=1 i=3
31,18,42,37,23,50 i=2
18,31,37,23,42, 50
排除A
四、课堂总结
01 什 么 是 冒 泡 排 序

数学排序ppt课件

数学排序ppt课件
归并排序的基本思想是将两个或两个以上的有序表合并成一个新的有序 表。
归并排序的关键在于将待排序序列不断分解成若干个子序列,直到子序 列的长度为1或0,然后将这些子序列合并成一个有序序列。
归并排序的步骤
分解
将待排序序列不断分解 成若干个子序列,直到 每个子序列的长度为1
或0。
解决
对每个子序列进行排序 ,可以使用插入排序、
插入排序在每一步都保证将一个未排序的元素插入到已排序部分的合适位置,从 而保证已排序部分始终保持有序。
插入排序的步骤
01 02 03
初始化已排序部分为第一个元素, 未排序部分为其他元素。
从未排序部分取出第一个元素。
在已排序部分找到该元素的合适位 置并插入。
插入排序的时间复杂度
最好情况
当输入数组已经有序时, 插入排序的时间复杂度为 O(n)。
数学排序ppt课件
$number {01}
目录
• 引言 • 冒泡排序 • 选择排序 • 插入排序 • 快速排序 • 归并排序
01 引言
排序的定义
1 2
3
排序
将一组数据按照一定的顺序排列,以便进行查找、插入、删 除等操作。
排序的依据
可以是数值大小、字母顺序、时间先后等。
排序的稳定性
如果两个元素相等,排序后它们的位置不应改变。
02
快速排序在平均情况下的时间复杂度为 O(nlogn),其中n为数组的长度。
03
快速排序在最好情况下的时间复杂度为 O(nlogn),其中n为数组的长度。
06 归并排序
归并排序的原理
归并排序是一种分治策略的排序算法,它将待排序序列分成若干个子序 列,然后分别对子序列进行排序,最后将排好序的子序列合并成一个有 序序列。

动画演示(冒泡法)PPT课件

动画演示(冒泡法)PPT课件

{t=s[j];s[j]=s[j+1];s[j+1]=t;}
printf(“%d %d %d %d %d \n”,s[0],
s[1], s[2], s[3], s[4]); }
s[0] s[1] s[2] s[3] s[4]
23795
16
冒泡法演示(升序) 下一步
j=4时,4<4 为假,循环
结束,该轮
变量与变量的 值
程序段: #include<stdio.h>
的大小,将 较大数存入
s[1]
main()
n5 i0
{ int s[10]={2,9,3,7,5}, n=5, i,j,t;
for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++)
值为4
if(s[j]>s[j+1])
j0
变量与变量的 值
程序段: #include<stdio.h>
的大小,将 较大数存入
s[2]
main()
n5 i0
{ int s[10]={2,9,3,7,5}, n=5, i,j,t;
for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++)
值为4
if(s[j]>s[j+1])
j1
{t=s[j];s[j]=s[j+1];s[j+1]=t;}
printf(“%d %d %d %d %d \n”,s[0],
s[1], s[2], s[3], s[4]); }
s[0] s[1] s[2] s[3] s[4]

(完整版)冒泡排序和选择排序

(完整版)冒泡排序和选择排序

6
55
7
43
1
18
2
9
3
13
交换
4
43
5
7
6
43
7
55
❖ 最大元素被交换到最后一个位置(位置7) ❖ 下一趟则需将次大元素交换到倒数第二个位置
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
简单排序算法 - 冒泡排序
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
1
三个整数排序
开始
输入三个整数a,b,c
Y a<b?
N
a<c?
Y
N Y
b<c?
N
输出a,b,c的值
交换a和b的值 交换a和c的值 交换b和c的值
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
5
冒泡排序方法
以7个元素为例说明冒泡排序 位置1~位置7的元素初始排列如下所示
1
43
2
18
3
9
4
13
5
55
6
7
7
43
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China

冒泡排序与选择排序的比较ppt课件

冒泡排序与选择排序的比较ppt课件

2
第一趟冒泡结果
2
3
a[2] a[3]
3
4
4
1
for(i=0;i++;i<3) 实现一趟冒泡的代码为: if(a[i]<a[i+1])
{ temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;
}
a[0]、a[1]、 a[2] 分别两两比较交换,小数沉 底到a[2]
a[0] a[1] a[2] a[3]
冒泡排序
n个数排序,需要进行n-1趟冒泡
a[0]、a[1]、 a[2]、 a[3]分别两两比较并交换, 使小数沉底到a[3]
a[0] a[1] a[2] a[3]
第一次比较
1
2
3
4
第二次比较
2
1
3
4
第三次比较
2
3
1
4
第一趟冒泡结果
2
3
4
1
第一趟冒泡,小数沉底到a[3]
a[0] a[1]
比较前:
1
if (a[max]<a[j]) max=j;
temp=a[0]; a[0]=a[max]; a[max]=temp;
第二趟:从3个元素中选出最大者,将其换入 a[1]中
过程为:令max表示最大元素的序号(初值max=1),a[1]到
a[3]逐一比较,找出最大元素的位置,a[1]与其互换,使最
大值位于a[1]。 a[0]
a[2] a[3]
3
4
2
1
4个数排序,需 要执行3趟冒泡。
每一趟冒泡,需 要数据进行两两 比较并交换。
选择排序
n个数排序,需要进行n-1趟选择

冒泡排序与选择排序的比较ppt课件

冒泡排序与选择排序的比较ppt课件
冒泡排序
n个数排序,需要进行n-1趟冒泡
1
a[0]、a[1]、 a[2]、 a[3]分别两两比较并交换, 使小数沉底到a[3]
a[0] a[1] a[2] a[3]
第一次比较
1
2
3
4
第二次比较
2
1
3
4
第三次比较
2
3
1
4
第一趟冒泡结果
2
3
4
1
2
第一趟冒泡,小数沉底到a[3]
a[0] a[1]
比较前:
大值位于a[0]。 a[0]
a[1]
a[2]
a[3]
第一次比较
1
2
3
4
max=1
第二次比较 max=2
1
2
3
4
第三次比较
1
2
3
4
max=3
第一趟选择结果
4
2
3
1
10
第一趟选择,大数换到a[0]中,只交换一次
a[0] a[1] a[2]
比较前:
1
2
3
第一趟选择结果
4
2
3
max=0; 实现一趟选择的代码为: for (j=1;j<4;j++)
a[2] a[3]
3
4
2
1
4个数排序,需 要执行3趟冒泡。
每一趟冒泡,需 要数据进行两两 比较并交换。
8
选择排序
n个数排序,需将其换入 a[0]中
过程为:令max表示最大元素的序号(初值max=0),a[0]到
a[3]逐一比较,找出最大元素的位置,a[0]与其互换,使最
} 5

冒泡排序算法演示PPT

冒泡排序算法演示PPT

;) )
i++ 是 i <=6
否 结束
}
9
按照这种画法第二趟、第三趟、第四趟排序的流程图 怎样画?怎样把整个冒泡排序的流程图画出来?
开始
i=0


rR[i[]1>]>r[Ri +[21]]
tt==Rr[[i2]]
rR[i[1]=]=r[Ri [+21]]
rR[i[+21]=]=t t
分析:后面的排序只要 按照这种方法不断进行就 行了。
for(i=0;i<7-j;i++) if(r[i]>r[i+1]) {t=r[i]; r[i]=r[i+1]; r[i+1]=t;}
printf("The sorted numbers:\n"); for(i=0;i<8;i++) printf("%4d",r[i]); system("pause"); }
不断的这样画下去要画多少个
类似的选择结构?
8

二.画出第一趟排序的算法流程图: 用简洁的循环结构进行表示 根据流程图完善程序:
开始
i=0
是 r[ri[]0>]>r[ri[+1]1] 否 tt==rr[[i0]] r[Rir[]01=]=r[rRi[+[12]1]] r[ir[+11]]==t t
for( ; if ( {
我们预计最多一共要经过多少趟排序呢?
5
初始
序号
1
2
3
4
5
6
7
8
数据 49

冒泡排序PPT课件

冒泡排序PPT课件
冒泡排序的基本原理是对存放原始数据的数 组,按从前往后的方向进行多次扫描,每次 扫描称为一趟。当发现相邻两个数据的次序 与排序要求的大小次序不符合时,即将这两 个数据进行互换。这样,较小的数据就会逐 个向前移动,好象气泡向上浮起一样。
2020年10月2日
3
做一做:
下面我们请几位同学上来讲台为我们演示 一下这种排序的过程,首先按照被叫到的 顺序排列,再用这种方法由低到高进行排 序。
2020年10月2日
4
例:用冒泡排序的方法将下面一组无序数组 排成从小到大
{ 49,38,65,97,76,13,27,49 }
分析:首先为了方便分析,我们把所给的数据 先用一个表格列出来,如下:
2020年10月2日
5
原数据和序号
序 号
1
2
3
4
趟9排3序8 的6步5 骤9:7 76 13 27 49
R[1], R[2], R[3], R[4], R[5], R[6], R[7], R[8]
分析:

开始 R[1]>R[2]
第一步做什么? 否
t:=R[1] R[1]:=R[2]
R[2]:= t
如这会何这样有交样交什换行换么数吗数问据?据题,,?
是 R[2]>R[3] 否
t:=R[2] R[2]:=R[3]
经过第二趟排序,实把现第了二什大么的目数的沉?到倒数第二个位置了!
2020年10月2日
7
观察原数据与第一、二趟排序后的数据
序 号
1
2
3
4
5
6
7
8
序数 据号49 138 625 97 3 76 143 27 5 49 6
7

冒泡排序的算法详解课件

冒泡排序的算法详解课件

冒泡排序的名称由来
• 名称由来:冒泡排序的名字来源于越小的元素会经过交换 慢慢“浮”到数列的顶端,如同气泡一样浮到水面上。
冒泡排序的基本思想
01
基本思想:通过不断地比较相邻 的两个元素,并进行交换,使得 较大的元素逐渐“冒泡”到数列 的末端。
02
重复以上过程,直到整个数列有序。
冒泡排序的算法步
总结词:简洁明了
详细描述:Python语言实现冒泡排序算法,代码简洁,易于理解。通过相邻元素比较和交换,使得每 一趟都能将最大的数移到正确的位置。
使用Java实现冒泡排序
总结词:结构严谨
详细描述:Java语言实现冒泡排序算法,代码结构严谨,适 合初学者学习。通过双重循环实现元素的比较和交换,能够 保证排序的正确性。
尽管冒泡排序在实际应用中可能不是最高效的算法, 但其简单易懂的特点使其成为教学和初学者学习排序 算法的常用选择。
THANKS.
优化交换过程
使用临时变量来交换元素,而不是通过多次赋值操作,这样可以减少交换过程中的操作 次数。
优化小数组的排序
使用快速排序或归并排序
对于小数组,使用快速排序或归并排序可能更为高效。 当数组大小小于一定阈值时,可以切换到其他排序算 法。
预处理小数组
对于小数组,可以通过预处理的方式将其排序,然后 将其存储在预定义的数组中,以减少排序时间。
使用C实现冒泡排序
总结词:高效快速
详细描述:C语言实现冒泡排序算法,利用指针和数组操 作,使得代码更加高效。通过减少不必要的比较和交换, 能够提高排序的效率。
冒泡排序的性能分
04

时间复杂度分析
01
最好情况:O(n)
02
最坏情况:O(n^2)

C语言常见排序算法.ppt

C语言常见排序算法.ppt

1.1.2 快速排序
算法实例:
始关键字
pivotkey 21 25 low
49 25* 16 08 high
一次交换
21
二次交换
三次交换
high-1 完成一趟排序
08 25 low
49 25* 16
high
08
49 25* 16 25
low
high
08 16 49 25*
25
low
08 16
low
常见排序算法
1.1 常见的排序算法
冒泡排序 快速排序 直接插入排序 希尔排序 选择排序 堆排序 归并排序
1.1.1 冒泡排序
算法描述
设待排序记录序列中的记录个数为n 一般地,第i趟起泡排序从1到n-i+1 依次比较相邻两个记录的关键字,如果发生逆序,则交换之 其结果是这n-i+1个记录中,关键字最大的记录被交换到第n-i+1的位 置上,最多作n-1趟。
08 16
21
high 25* 49 25
high 25* 49 25
low high
1.1.2 快速排序
算法实例:
完成一趟排序
08 16
21 25* 49 25
分别进行快速排序 有序序列
08 16
21 25* 25 49
08 16
21 25* 25 49
11
1.1.2 快速排序
算法分析:
快速排序是一个递归过程; 利用序列第一个记录作为基准,将整个序列划分为左右两个子序列。只要 是关键字小于基准记录关键字的记录都移到序列左侧; 快速排序的趟数取决于递归树的高度。 如果每次划分对一个记录定位后, 该记录的左侧子序列与右侧子序列的长 度相同, 则下一步将是对两个长度减半的子序列进行排序, 这是最理想的情 况

排序算法精讲PPT课件

排序算法精讲PPT课件
if (L.r[j].key > L.r[j+1].key ) {
for(j = i - 2; L.r[0].key < L.r[j].key]; j--)
L.r[0] = L.r[j]; L.r[j] = L.r[j+1];
L.r[j+1] = L.r[j];
L.r[j+1] = L.r[0]; exchanged =TRUE;
有序序列R[1..i-1]
第i趟 简单选择排序
无序序列 R[i..n] 从中选出关键字最小的记录
有序序列R[1..i]
无序序列 R[i+1..n]
简单选择排序算法
❖ 以顺序表作为存储结构的简单选择排序算法
void SelectSort(SqList &L) {//对顺序表作简单选择排序
ffoorr((ii==11;;ii<<LL..elnenggthth; ;i+i+++) ){{
数据结构定义
#define MAXSIZE 100
typedef int Keytype;
// 定义关键字类型为整型
typedef char InfoType[100];
typedef struct { KeyType key; InfoType otherinfo;
}RedType;
// 关键字项 // 其他数据项 // 记录类型
typedef struct { RedType r[MAXSIZE+1]; int length;
}SqList;
// r[0]闲置或用作哨兵 // 顺序表长度 // 顺序表类型
直接插入排序
直接插入排序(Straight Insertion Sorting)的基本思想 是:n个待排序的元素由一个有序表和一个无序表组成, 开始时有序表中只包含一个元素。排序过程中,每次从 无序表中取出第一个元素,将其插入到有序表中的适当 位置,使有序表的长度不断加长,完成排序过程。

冒泡排序和选择排序的比较专题培训课件

冒泡排序和选择排序的比较专题培训课件

大值位于a[0]。 a[0]
a[1]
a[2]
a[3]
第一次比较
1
2
3
4
max=1
第二次比较 max=2
123Fra bibliotek4第三次比较
1
2
3
4
max=3
第一趟选择结果
4
2
3
1
第一趟选择,大数换到a[0]中,只交换 一次
a[0] a[1] a[2] a[3]
比较前:
1
2
3
4
第一趟选择结果
4
2
3
1
max=0; 实现一趟选择的代码为: for (j=1;j<4;j++)
第一次比较
4
3
2
1
max=2
第三趟选择结果
4
3
2
1
第三趟选择,大数换到a[2]中,只交换 一次
a[0] a[1] a[2] a[3]
比较前:
4
3
2
1
第三趟选择结果
4
3
2
1
max=2; 实现第三趟选择的代码为:for (j=3;j<4;j++)
if (a[max]<a[j]) max=j;
temp=a[2]; a[2]=a[max]; a[max]=temp;
a[1]
a[2]
a[3]
第一次比较
4
2
3
1
max=2
第二次比较 max=2
4
2
3
1
第二趟选择结果
4
3
2
1
第二趟选择,大数换到a[1]中,只交换 一次

常见的排序算法——冒泡排序+课件—2024学年浙教版(2019)高中信息技术选修1

常见的排序算法——冒泡排序+课件—2024学年浙教版(2019)高中信息技术选修1


③ 总共需要比较
冒泡排序算法对数组p做的第4遍加工
常见的排序算法 — 冒泡排序
① 一共需要(n-1)次加工
每一次加工,都是为了排好未排序数据当中最大的元素
9
9
9
7
14
12
7
9
12
7
12
12
7
14
14
14
18
18
18
18
排好第1大的元素
排好第2大的元素
排好第3大的元素
排好第4大的元素
常见的排序算法 — 冒泡排序
j=0
j+1
冒泡排序算法实现
① 一共需要(n-1)次加工
i:记录当前正进行的处理遍数
j:记录当前数组元素的下标。
每遍处理过程中,
j总是从第一个数据元素,下标为0开始。
按每次加1的方式
直至j+1=n-i => j=n-i-1为止
每次比较p[j]与p[j+1]进行比较,
若p[j]>p[j+1],则进行互换
共有(n-i+1)个元素需要比较
两两比较需要比较(n-i)次
常见的排序算法 — 冒泡排序
③ 总共需要比较
(−)


第1遍加工:比较(n-1)次
Q:一共需要几次加工?
① 一共需要(n-1)次加工
第2遍加工:比较(n-2)次

第(n-2)遍加工:比较2次
第(n-1)遍加工:比较1次
总共需要比较次数S
14
14
14
14
18
18
18
18
18
18
18
冒泡排序算法对数组p做的第2遍加工
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7
冒泡排序方法
第三步:令位置3和位置4的元素比较,若位置3的元素大,则交换 第四步:令位置4和位置5的元素比较,若位置4的元素大,则交换 第五步:令位置5和位置6的元素比较,若位置5的元素大,则交换
1
18
1
18
1
18
2
9
2
9
2
9
3
43
3
13
3
13
4
13
交换 4
43
交换 4
43
5
55
5
55
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
5
冒泡排序方法
以7个元素为例说明冒泡排序 位置1~位置7的元素初始排列如下所示
1
43
2
18
3
9
4
13
5
55
6
7
7
43
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
if b<c then 交换b和c的值; if b<d then 交换b和d的值; if b<e then 交换b和e的值; /*找出第二大的数并放在b中*/ if c<d then 交换c和d的值; if c<e then 交换c和e的值; /*找出第三大的数并放在c中*/ if d<e then 交换d和e的值; /*找出第四大的数并放在d中*/ print a,b,c,d,e;
END
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
3
排序时数据集中存放在一段空间中
在前面的排序算法中,存放数据的位置(以a、b、c、d、 e表示)之间没有联系
下面,约定排序时数据集中存放在一段存储空间中 例如:下面的7个整数连续地存放在位置1~位置7中
9
冒泡排序方法
1 18 29 3 13 4 43 57 6 43 7 55
19 2 18 3 13 4 43 57 6 43 7 55
19 2 13 3 18 4 43 57 6 43 7 55
19 2 13 3 18 47 5 43 6 43
7 55
次大元素被交换到倒数第二个位置(位置6) 下一趟则需将第三大元素交换到倒数第三个位置,依此类推
1
43
2
18
3
9
4
13
5
55
6
7
7
43
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
4
简单排序方法
简单排序方法有多种,这里我们介绍冒泡(起泡)排序法。 冒泡排序法(bubble sort)的基本思想是:通过对相邻元素的比较和
6
冒泡排序方法
第一步:令位置1和位置2的元素比较,若位置1的元素大,则交换 第二步:令位置2和位置3的元素比较,若位置2的元素大,则交换
1
43
1
18
1
18
2
18
2
43
2
9
3
9
3
9
3
43
4
13
交换 4
13
交换 4
13
5
55
5
55
5
55
6
7
6
7
6
7
7
43
7
43
7
43
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, Ch数排序
BEGIN input a,b,c; /*输入三个整数*/ if a<b then 交换a和b的值; if a<c then 交换a和c的值; if b<c then 交换b和c的值; print a,b,c;
END
推广至5个 整数排序
算法:五个整数排序
BEGIN input a,b,c,d,e; /*输入五个整数*/ if a<b then 交换a和b的值; if a<c then 交换a和c的值; if a<d then 交换a和d的值; if a<e then 交换a和e的值; /*找出最大数并放在a中*/
简单排序算法 - 冒泡排序
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
1
三个整数排序
开始
输入三个整数a,b,c
Y a<b?
N
a<c?
Y
N Y
b<c?
N
输出a,b,c的值
交换a和b的值 交换a和c的值 交换b和c的值
结束
算法:三个整数排序
BEGIN input a,b,c; /*输入三个整数*/ if a<b then 交换a和b的值; if a<c then 交换a和c的值; if b<c then 交换b和c的值; print a,b,c;
END
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
交换,使全部记录排列有序。 冒泡排序的过程:对每两个相邻的元素进行比较,若为逆序,则将
两者交换,这样的操作反复进行,直至全部记录都比较、交换完毕 为止。如此经过一趟冒泡排序之后,就将关键字最大(或最小)的元 素安排在最后一个(或第一个) 元素的位置上。然后,对后n-1个元 素重复进行同样的操作,则将具有次大(或次小)元素安排在倒数(或 正数)第二个元素的位置上。重复以上过程,直至没有元素需要交换 时为止。至此,整个序列的记录按关键字由小到大的顺序排列完毕。
5
7
6
7
6
7
6
55
7
43
7
43
7
43
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
8
冒泡排序方法
第六步:令位置6和位置7的元素比较,若位置6的元素大,则交换
1
18
2
9
3
13
4
43
5
7
6
55
7
43
1
18
2
9
3
13
交换
4
43
5
7
6
43
7
55
最大元素被交换到最后一个位置(位置7) 下一趟则需将次大元素交换到倒数第二个位置
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
相关文档
最新文档