第21讲 排序之交换排序和选择排序
- 格式:pptx
- 大小:468.75 KB
- 文档页数:96
选择排序数学公式选择排序(Selection Sort)是一种简单直观的排序算法。
它首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
选择排序的数学公式可以这样理解:假设我们要对一个包含 n 个元素的数组进行排序。
在每一轮遍历中,我们都要找出未排序部分的最小(或最大)元素,并与当前位置的元素进行交换。
第一轮,我们从 n 个元素中找到最小的元素,与第 1 个位置的元素交换。
第二轮,我们从剩下的 n - 1 个元素中找到最小的元素,与第 2 个位置的元素交换。
以此类推,第 i 轮,我们从剩下的 n - i + 1 个元素中找到最小的元素,与第 i 个位置的元素交换。
直到第 n - 1 轮结束,整个数组就排序完成了。
为了更直观地理解选择排序的数学公式,咱们来举个例子。
比如说,有一组数字:5,2,9,1,8 。
第一轮,我们从这 5 个数字中找到最小的 1 ,把它和第 1 个位置的5 交换,数组变成了 1,2,9,5,8 。
第二轮,从剩下的 4 个数字 2,9,5,8 中找到最小的 2 ,和第 2个位置的 9 交换,数组变成 1,2,9,5,8 。
第三轮,在剩下的 3 个数字 9,5,8 中找到最小的 5 ,和第 3 个位置的 9 交换,数组变成 1,2,5,9,8 。
第四轮,在剩下的 2 个数字 9,8 中找到最小的 8 ,和第 4 个位置的 9 交换,数组变成 1,2,5,8,9 。
经过这四轮,数组就排序完成啦。
在实际应用中,选择排序的性能并不是特别出色。
它的平均时间复杂度为 O(n²),空间复杂度为 O(1) 。
这意味着,当数据量较大时,选择排序可能会比较慢,但对于小型数据集或者某些特定场景,它仍然是一种可行的选择。
就像我们在生活中做选择一样,有时候要从一堆选项里挑出最好的或者最适合的。
⼏种常见的排序⽅法常见算法效率⽐较:⼀. 冒泡排序冒泡排序是是⼀种简单的排序算法。
它重复地遍历要排序的数列,⼀次⽐较两个元素,如果他们的顺序错误就把它们交换过来。
遍历数列的⼯作是重复的进⾏直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越⼩的元素会经由交换慢慢“浮”到数列的顶端1.冒泡排序算法的运作如下:(1)⽐较相邻的元素。
如果第⼀个⽐第⼆个⼤(升序),就交换他们两个(2)对每⼀对相邻元素作同样的⼯作,从开始第⼀对到结尾的最后⼀对。
这步做完后,最后的元素还是最⼤的数(3)针对所有的元素重复以上的步骤,除了最后⼀个2.冒泡排序的分析:交换过程图⽰(第⼀次)那么我们需要进⾏n-1次冒泡过程,每次对应的⽐较次数如下图所⽰代码如下:def bubble_sort(alist):# j为每次遍历需要⽐较的次数,是逐渐减⼩的for j in range(len(alist)-1,0,-1):for i in range(j):if alist[i] > alist[i+1]:alist[i], alist[i+1] = alist[i+1],alist[i]li = [1,3, 4, 5, 2, 11, 6, 9, 15]bubble_sort(li)print(li)3. 时间复杂度算法的时间复杂度是指算法执⾏的过程中所需要的基本运算次数(1)最优时间复杂度:O(n)(表⽰遍历⼀次发现没有任何可以交换的元素,排序结束)(2)最坏时间复杂度:O(n2)(3)稳定性:稳定假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj 之前,⽽在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的常见算法的稳定性(要记住)、、、不是稳定的排序算法,⽽、、、、是稳定的排序算法。
⼆. 选择排序选择排序是⼀种简单直观的排序算法。
交替排序法名词解释1.引言1.1 概述交替排序法是一种常见的排序算法,也被称为奇偶排序法或定向冒泡排序法。
它是一种简单直观的排序方法,通过比较和交换相邻元素的位置来达到排序的目的。
这种排序算法最早是为并行计算机设计的,利用了并行计算的特性以提高排序的效率。
在并行计算中,数据被划分为多个子序列,并行处理这些子序列,最后再合并得到有序的结果。
交替排序法的基本思想是:将待排序的序列分为奇数位置和偶数位置两个子序列,然后分别对这两个子序列进行排序。
首先比较并交换奇数位置相邻的元素,然后比较并交换偶数位置相邻的元素,重复以上步骤,直到序列完全有序。
可以看出,每一轮排序都会有一个元素被放置在正确的位置上,因此需要多次迭代来完成排序过程。
交替排序法的优势在于其简单易懂的算法逻辑和相对较好的性能。
它的时间复杂度为O(n^2),与冒泡排序类似,但交替排序法的并行化处理可以提高它的实际效率。
此外,交替排序法的算法思想也可以应用于其他排序算法的优化,例如快速排序和归并排序等。
总的来说,交替排序法是一种简单而实用的排序算法,它在并行计算和算法优化中有着重要的应用价值。
在接下来的章节中,我们将详细介绍交替排序法的定义和应用场景,以及总结其优点和展望其发展前景。
1.2 文章结构本文将围绕交替排序法展开论述,并且按照以下结构进行组织:引言部分将首先给出对交替排序法的概述,简要介绍该排序方法的基本原理和特点。
接着将介绍本文的整体结构,以引导读者对文章内容有一个清晰的了解。
最后,在引言部分说明文章的目的,即通过对交替排序法的深入探讨,分析其应用场景、优点以及未来的发展前景。
正文部分将分为两个主要部分,分别是交替排序法的定义和交替排序法的应用场景。
在第一个主要部分中,会详细阐释交替排序法的定义。
首先会从算法的基本原理出发,介绍排序的过程和步骤。
然后会对交替排序法的时间复杂度和空间复杂度进行分析,以评估其在实际应用中的效率。
此外,还将深入讨论交替排序法在处理不同规模和类型的数据时的优势和局限性。