首页
学习
活动
专区
工具
TVP
发布

Python|选择排序

术语说明 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定 :如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序 :所有排序操作都在内存中完成; 外排序 :...选择排序 是表现最稳定的排序算法之一 ,因为无论什么数据进去都是O(n2)的时间复杂度 ,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。...理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。 选择排序(Selection-sort) 是一种简单直观的排序算法。...一般来说,选择排序都采用in-place在数组上实现。具体算法描述如下: n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。...:0.048868417739868164 插入排序耗时:16.25152587890625 选择排序耗时:6.055371999740601

51910
您找到你想要的搜索结果了吗?
是的
没有找到

Python | 选择排序之简单选择排序

一听到选择排序的词第一反应都是要通过选择排序,那么我们的第一反应是不是对的呢,我们接下来验证一下,了解一下它的定义。...简单选择排序:最简单的选择方法是顺序扫描序列中的元素,记住遇到的最小元素(一次扫描完毕就找到了一个最小的元素。反复扫描就能完成排序工作)。...显然就是我们理解的那个意思,每次选择出序列最小的元素依次进行排序。 解问题描述 给定一个序列,我们将如何用简单选择排序来将它排序好呢,下面将一一讲述。...此题我们是用简单选择排序来实现它,根据简单排序的定义,首先是找出序列中最小的,然后再找出第二小的(也就是除了上一次找出来的元素,从剩下的元素中找出最小的),重复去寻找直到排序完成,下面将由图示来展示这个过程...结语 方法是用到了直接选择排序算法的简单交换,也就是上述的交换两个元素的位置。这是我对简单选择排序的理解,或许还有更好的理解,我会继续研究。

70240

Python算法——选择排序

选择排序(Selection Sort)是一种简单的排序算法,它的基本思想是在未排序的部分中选择最小(或最大)的元素,然后将其放在已排序部分的末尾。...选择排序不同于冒泡排序,它不需要反复交换元素,因此在某些情况下可能比冒泡排序更快。本文将详细介绍选择排序的工作原理和Python实现。...选择排序的核心思想是每一轮选择一个最小的元素,并将它交换到已排序部分的末尾。这一过程持续多轮,每轮选择一个最小的元素,直到整个数组有序。 下面是一个示例,演示选择排序的过程。...22, 25, 64] 第五轮选择,最小元素为 64,交换位置后数组不变:[11, 12, 22, 25, 64] Python实现选择排序 下面是Python中的选择排序实现: def selection_sort...示例代码 下面是一个使用Python进行选择排序的示例代码: def selection_sort(arr): n = len(arr) for i in range(n):

16810

Python-排序-选择排序-优化

选择排序的思想:将一组数据分为两部分,前面是已排序部分,后面是未排序部分,初始状态可认为位置 0 为已排序部分 (数组下标从0开始),其余为未排序部分,每一次都从未排序部分选择一个最小元素放在已排序部分的末尾...性能分析 首先,选择排序的只需要一个变量做为交换,因此空间复杂度是O(1),是一种原地排序算法。...其次,选择排序在未排序区间选择一个最小值,与前面的元素交换,对于值相同的元素,因为交换会破坏他们的相对公交车,因此它是一种不稳定的排序算法。...的相对顺序已经变化,因此选择排序是一种不稳定的排序算法。...选择排序无论数据初始是何种状态,均需要在未排序元素中选择最小或最大元素与未排序序列中的首尾元素交换,因此它的最好、最坏、平均时间复杂度均为 O(n^2)。

71910

Python——关于排序算法(选择排序法)

这是奔跑的键盘侠的第98篇文章 接前面两篇,今天继续讲选择排序法。...选择排序法(selection sort) 先来看一下百度百科的定义: 选择排序法 是对 定位比较交换法(也就是冒泡排序法) 的一种改进。...选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。...选择排序法总的平均时间复杂度为 ? 。...,但是呢,python有自带的内置语法,就是sorted(num:list)和num.sort(),显然这个内置的算法是更更更快的,平时如有用到排序,可别无聊到自己写一个低效的哟。

65030

Python排序算法系列】—— 选择排序

选择排序 过程演示: ​ 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。...重复第二步,直到所有元素均排序完毕。 选择排序对冒泡排序进行了改进,保留了其基本的多趟比对思路,每趟都使当前最小项就位。...选择排序的时间复杂度比冒泡排序稍优but 比对次数不变,还是0(n²), 而交换次数则减少为0(n)。 选择排序实现代码: #默认第一个是最小,然后与后面进行比较,遇到最小就交换,不影响比较过程。...: 选择排序算法和冒泡排序算法的比较次数相同,所以时间复杂度也是 O(n²)。...但是,由于减少了交换次数,因此选择排序算法通常更快。 Practice2: ​ 选择排序可以先排小的再排大的,也可以逆过来先排大的再排小的。

9810

排序——选择排序

选择排序 --- 简单选择排序 基本思想 每一趟在后面 n-i +1个中选出关键码最小的对象, 作为有序序列的第 i 个记录 算法实现 void SelectSort(SqList &L){ // 对记录序列...L.length]作简单选择排序 for(i = 1; i <= L.length; i++){ // 选择第 i 小的记录,并交换到位 k = i; for(j = i + 1; j <...k]); // 交换 } } 算法分析 时间复杂度:O(n^2) - 移动次数: - 最好情况:0 - 最坏情况:3(n-1) 空间复杂度: O(1) 稳定性: 稳定 --- 树形选择排序...算法分析 含有n个叶子节点的完全二叉树的深度为log2 n+1,则选择排序的每一趟都需作log2n次比较,排序的时间复杂度O(nlog2n)。...改进:简单选择排序没有利用上次选择的结果,是造成速度满的重要原因。如果,能够加以改进,将会提高排序的速度。

853125

选择排序(简单选择排序、堆排序

选择排序 选择排序的基本思想是:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列。...简单选择排序 概念 假设排序表为L[1…N],,第i趟排序即从L[1…N]中选择关键字最小的元素与L(i)交换,每一趟排序可以确定一个元素的最终位置,这样经过n-1趟排序就可以使得整个排序表有序...= i) swap(A[i],A[min]); } } 堆排序 概念 堆排序要结合顺序存储的完全二叉树的特性进行学习。...堆排序的思路很简单:首先将存放在L[1…N]中的N个元素建成初始堆,由于堆本身的特点(以大根堆为例),堆顶元素就是最大值。...i;//修改k值,以便继续向下筛选 } } A[k] = A[0]; //被筛选结点的值放入最终位置 } void Heap_Sort(ElemType A[],int len) {//堆排序

50410

Python 经典算法之 “ 选择排序

选择排序是什么 选择排序(Selection sort)是一种简单直观的排序算法。...它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,所以称为:选择排序。 今天的分享将会以待排序的数据元素中选出最大的元素作为示例来分享给大家。...代码示例如下: #定义选择排序方法,传入一个alist列表 def selection_sort(alist): #第一层for循环表示用来遍历要整体执行的次数 for i in range...alist[max_index],alist[i]=alist[i],alist[max_index] return alist #返回最后排序后的alist列表 if __...: 冒泡排序 选择排序 结束语:我们在代码上要理解它的调用逻辑及理念,用debug去一步步调试代码执行的轨迹,对我们去理解代码的实现有很好的帮助。

21310

选择排序之简单选择排序

1.引言 一听到选择排序的词第一反应都是要通过选择排序,那么我们的第一反应是不是对的呢,我们接下来验证一下,了解一下它的定义。...简单选择排序:最简单的选择方法是顺序扫描序列中的元素,记住遇到的最小元素(一次扫描完毕就找到了一个最小的元素。反复扫描就能完成排序工作)。...显然就是我们理解的那个意思,每次选择出序列最小的元素依次进行排序。 2.问题 给定一个序列,我们将如何用简单选择排序来将它排序好呢,下面将一一讲述。...此题我们是用简单选择排序来实现它,根据简单排序的定义,首先是找出序列中最小的,然后再找出第二小的(也就是除了上一次找出来的元素,从剩下的元素中找出最小的),重复去寻找直到排序完成,下面将由图示来展示这个过程...4.结语 方法是用到了直接选择排序算法的简单交换,也就是上述的交换两个元素的位置。这是我对简单选择排序的理解,或许还有更好的理解,我会继续研究。

41910
领券