首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Min和Max Python从两端进行选择排序

选择排序是一种简单直观的排序算法,其基本思想是每次从待排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾(或开头),直到所有元素都排序完成。

在Python中,可以使用Min和Max函数来实现从两端进行选择排序。具体步骤如下:

  1. 定义一个待排序的列表。
  2. 初始化两个指针,一个指向列表的开头,一个指向列表的末尾。
  3. 循环遍历列表,每次找到最小值和最大值,并将它们分别放到已排序序列的开头和末尾。
  4. 指针向内移动,缩小待排序列表的范围。
  5. 重复步骤3和步骤4,直到待排序列表为空。

以下是使用Min和Max函数实现从两端进行选择排序的Python代码示例:

代码语言:txt
复制
def selection_sort(arr):
    left = 0
    right = len(arr) - 1
    
    while left < right:
        min_idx = arr.index(min(arr[left:right+1]))
        max_idx = arr.index(max(arr[left:right+1]))
        
        arr[left], arr[min_idx] = arr[min_idx], arr[left]
        arr[right], arr[max_idx] = arr[max_idx], arr[right]
        
        left += 1
        right -= 1
    
    return arr

# 示例用法
arr = [5, 3, 8, 2, 1, 9, 4, 7, 6]
sorted_arr = selection_sort(arr)
print(sorted_arr)

该代码会输出 [1, 2, 3, 4, 5, 6, 7, 8, 9],表示列表已经按照从小到大的顺序进行了排序。

选择排序的时间复杂度为O(n^2),其中n是待排序列表的长度。尽管选择排序的效率相对较低,但它的实现简单,适用于小规模的数据排序。

腾讯云提供了多种云计算相关产品,例如云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。更多关于腾讯云产品的信息可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 绘制持仓榜单的“棒棒糖图”

    画图思路大体就是:先画水平线图,再用 scatter 散点图画线左右两端的点,然后标注两端名称,以及标题注解。 Python 中比较常用的两种图表库是 matplotlib plotly。...Dash 是使用Python 构建高度自定义用户界面的数据可视化应用程序的理想选择。它特别适合做数据分析、数据可视化以及仪表盘或者报告展示。...绘图时,表格中取出某一日期的一行记录,将持仓数目排序,把对应的数据存入列表中,之后进行画图。 首先对数据进行清洗处理, pandas读取数据,这里需要去除 000905_SH 列,以及删除全0行。...,为日历选项做判断 date_list = excel_pd.index.values.tolist() min_date = min(date_list) max_date = max(date_list...使用plt.text分别画线两端的标注期货公司持仓数。plt.annotate画排名标注,分别设置颜色字体大小。 ? 但这个效果是反的,我们是希望排名最前面的在上,排名最后面的下。

    3.1K20

    【C语言】深入解析选择排序

    选择排序函数selectionSort: 使用一个for循环遍历数组,每次选出未排序部分的最小元素,并将其与未排序部分的第一个元素交换。...min_idx = j; } // 仅在需要时才进行交换 if (min_idx !...= i) swap(&arr[min_idx], &arr[i]); } } 双向选择排序: 双向选择排序在每一轮中同时选出最小值最大值,并分别放置在未排序部分的两端,...小型数据集: 在处理小型数据集时,选择排序的性能足够,而且实现简单。 需要简单实现的场景: 选择排序的实现代码简洁明了,适合在需要快速实现排序功能的场景中使用。...在学习使用选择排序时,了解其优缺点以及适用场景,能够帮助我们更好地选择使用排序算法。希望本文能帮助读者深入理解选择排序,并在实际编程中灵活应用。

    5810

    排序】插入排序选择排序详解

    实际中很少使用 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:不稳定 选择排序优化 优化方法 以上算法是每次找出最小的值放在指定位置,一共要找n-1次。...变量begin变量end是数组的两端MinMax在0位置,minmax分别找小大的下标,i=begin+1,让begin+1到end的数都与begin比较。...当max与begin重合时,min在最小值位置 begin先与min的位置交换数据,此时max位置的已经不是最大值了 当max再与end位置交换数据,排序就会出错 解决方法: 当max与...begin重合时,先让begin与min交换,此时max原指向的最大值位置已改变,应对max进行修正,让其重新指向数组中真正的最大值位置。...当max与begin重合,并且begin此时完成了交换,此时最大值已经交换到了min所指向的位置 修改max,让max来到min位置 然后再让max与end交换 代码实现: void SelectSort

    9910

    数据结构入门到精通——直接选择排序

    实际中很少使用 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:不稳定 直接选择排序的特性总结起来,主要是其直观易懂、原地排序不稳定排序的特点。...因此,直接选择排序的直观性是其显著特点之一,使得初学者容易理解实现。 另一个特性是原地排序,这意味着直接选择排序不需要额外的存储空间来进行排序,它直接在原始数组上进行操作,改变了原始数组的顺序。...整体上,这段代码通过不断地选择并交换最小元素,最终将数组 a 排序为升序。 六、直接选择排序的优化 使用minmax对直接选择排序进行优化可以减少交换的次数。...如果是,继续下面的操作;如果不是,说明排序已完成,退出循环。 在每一次迭代中,定义变量minmax,分别用于记录当前未排序部分的最小值最大值的索引,初始值分别设为beginend。...begin到end遍历数组a,找到当前最小值最大值的索引,更新minmax。 交换最小值begin位置的元素,使当前最小值放到已排序部分的起始位置。

    12810

    数据结构与算法 #18 下跳棋,极富想象力的同向双指针模拟

    标签:模拟、贪心、排序、同向双指针 问题描述 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,你可以两端之一拿起一枚石子(位置最大或最小),并将其放入两端之间的任一空闲位置。...那么就可以位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。 当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。...示例 2: 输入:a = 4, b = 3, c = 2 输出:[0, 0] 解释:我们无法进行任何移动。...= a ---- 问题抽象 概括问题目标: 求移动石头直到连续的最小最大操作次数,每次操作只能选择端点石头,且只能移动到非端点位置。...val max2 = stones[n - 2] - stones[0] + 1 - (n - 1) val maxOp = Math.max(max1, max2)

    20530

    Python入门-6大数据类型操作

    Python的6种数据类型操作总结 本文对Python中常见6种数据类型的操作进行了汇总: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典...2.1键盘输入 终端中通过input函数输入的任何内容都是字符串数据 2.2三种方法生成 通过3种方法生成字符串数据: 单引号:`python` 双引号:“python” 三引号:一般字符串内容较长时使用...部分,不包含stop部分 切片的时候,索引左边0开始,右边-1开始 步长step可正可负 2.4常用函数 求长度:len 返回最值:maxmin 查看字符的编码:ord 查看编码(数值)对应的字符...(比较ASCII码):maxmin 3.3常见操作 索引切片操作(类比字符串) append:将整体追加到列表的末尾 extend:列表中的每个元素进行合并,组成一个大的列表 index:查看元素的索引...len 元组元素重复:* 元组拼接:+ 查看最值:maxmin 成员判断:in 遍历元组元素:for循环 索引切片 五、字典Dictionary 字符串、列表、元组都是有序的数据类型,字典是无序的数据类型

    20920

    【面试高频题】难度 15,简单双指针运用

    Tag : 「排序」、「双指针」 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。...示例 1: 输入:nums = [2,6,4,8,10,9,15] 输出:5 解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。...双指针 + 排序 最终目的是让整个数组有序,那么我们可以先将数组拷贝一份进行排序,然后使用两个指针 分别找到左右两端第一个不同的地方,那么 这一区间即是答案。...然后我们对中间部分 进行遍历: 发现 :由于对 部分进行排序后 会出现在 后,将不满足整体升序,此时我们需要调整分割点 的位置; 发现 :由于对 部分进行排序后 会出现在 前,将不满足整体升序...❞ 代码: class Solution { int MIN = -100005, MAX = 100005; public int findUnsortedSubarray(int[]

    15130

    Redis常用命令整理

    该命令按照元素分数从小到大的顺序返回分数在 minmax 之间(包含 min max 的元素)             如果希望分数范围不包含端点值,可以在分数前加上 "(" 符号,例如:希望返回...,而且他的 min max 的参数的顺序 zrangebyscore 命令是相                 反的         增加某个元素的分数             zincrby key...max             zremrangebyscore 命令删除指定分数范围内的所有元素,参数 min max 的特性 zrangebyscore 命令中的一样,返回值是删除                ...,expireat 单位秒 pexpireat 单位毫秒     sort          该命令可以对列表类型,集合类型,有序集合类型键进行排序         列表类型:         有序集合类型排序时...,如果希望保存排序结果,可以使用 store 参数,保存后键的类型为列表类型

    97370

    Redis常用命令整理

    该命令按照元素分数从小到大的顺序返回分数在 minmax 之间(包含 min max 的元素)             如果希望分数范围不包含端点值,可以在分数前加上 "(" 符号,例如:希望返回...,而且他的 min max 的参数的顺序 zrangebyscore 命令是相                 反的         增加某个元素的分数             zincrby key...max             zremrangebyscore 命令删除指定分数范围内的所有元素,参数 min max 的特性 zrangebyscore 命令中的一样,返回值是删除                ...,expireat 单位秒 pexpireat 单位毫秒     sort          该命令可以对列表类型,集合类型,有序集合类型键进行排序         列表类型:         有序集合类型排序时...,如果希望保存排序结果,可以使用 store 参数,保存后键的类型为列表类型

    97390

    七十九、深度广度优先搜索算法

    ②.可供选择的范围列表:「所有可供选择的范围列表。」 ③.已做出的选择列表:「标记当前已经做出的选择。」...接下来Queue中移除Size中的多个元素,对他们进行符合我们题目的一些操作。 移除每个节点时,把它们的子节点添加进Queue中。...min_depth + 1 Leetcode第112题:路径总和 给定一个二叉树一个目标,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标。...,记录根节点到当前节点的路径,以防止重复计算。...collection 为 Python 的内建集合版块,collection.deque 为双端队列,可以两端添加(append)弹出(pop)元素,且时间复杂度为 O(1),耗时小于 list 的

    57330

    Python算法——桶排序

    排序是一种线性时间复杂度的排序算法,适用于一定范围内的浮点数排序。本文将详细介绍桶排序的工作原理Python实现。...桶排序的工作原理 桶排序的基本思想是: 将元素均匀分布到若干个桶中,每个桶中的元素属于一定的范围。 对每个桶中的元素进行排序。可以使用其他排序算法,也可以递归地使用排序。...桶排序的关键在于如何将元素分配到桶中以及如何对桶中的元素进行排序。通常情况下,桶的数量范围需要根据输入数据的特性来选择。...Python实现桶排序 下面是Python中的桶排序实现: def bucket_sort(arr): max_val = max(arr) min_val = min(arr)...示例代码 下面是一个使用Python进行排序的示例代码: def bucket_sort(arr): max_val = max(arr) min_val = min(arr)

    20210

    动态可视化十大排序算法之插入排序

    思想 插入排序,顾名思义,关键的词就是插入,类比于选择排序,每次排序区间选择最小值排序区间的第一个元素进行交换;插入排序也是同样的套路,它同样把待排序元素分为已排序区间排序区间,每次排序区间选择第一个元素...len(array)): temp = array[i] index = i - 1 while index >= 0: # 将待排序区间的第一个元素排序区间的元素进行后往前比较...len(array)): temp = array[i] index = i - 1 while index >= 0: # 将待排序区间的第一个元素排序区间的元素进行后往前比较...对 个数据排序所需的时间 可以看到,使用二分查找进行优化后,程序的运行时间可以降低一半左右。虽然没有办法改变插入排序的时间复杂度,但已经将效率提升了一倍。...复杂度分析 无论是原始的插入排序,还是使用二分查找进行优化,时间复杂度都是: ,不知道有没有人会疑惑,那二分查找到底优化了哪里呢?因为找到插入位置后,搬移元素也需要 的时间复杂度。

    61710

    解决大模型幻觉问题的新方案:探索长文本切割的奥秘

    固定长度+两端扩展在上下文比较连贯的场景下效果较好。但是,这两种方法都有各自的问题。 针对这些问题,我提出了一个新的解决方案:动态切割算法。...如果需要两端扩展,就向前寻找切割点进行切割。...下面是这个算法的具体实现代码: def split_text(text, min_length=300, max_length=500, overlap_length=0, punctuation_marks...上面的代码使用GPT4生成,咒语如下: 你是一个高级python开发工程,精通算法设计python语法规范,请帮我设计一个文本切割算法,请先列出代表句子结束的标点符号,然后用标点符号作为切割点进行切割...print() 测试结果如下: 结果可以看出,这种动态切割的方法可以有效地处理长文本,使得切割后的文本段落在长度连贯性上都保持得较好。

    47410

    开发实例:怎样用Python找出一个列表中的最大值最小值?

    Python中,可以使用内置函数maxmin来分别找出一个列表中的最大值最小值。这两个函数非常简单易用,无需编写任何复杂的代码即可找到指定列表中的最大或最小值。...除了直接使用maxmin函数以外,还可以使用sorted排序函数来实现查找最值。具体做法需要先将列表元素排序,然后取第一个最后一个元素即为最小值最大值。...[-1] print(min_num, max_num) # 1 8 上述代码首先使用sorted函数对列表nums进行排序,然后将排好序的列表保存到sorted_nums变量中。...接着,声明两个变量min_nummax_num分别记录最小值最大值,稍微复杂一点的地方在于使用Python中的多赋值语法来同时获取这两个值。最后使用print语句输出变量的值,结果是18。...总之,在日常应用中,获取列表中的最大值最小值是非常常见的需求,Python提供了多种方法来解决这个问题,比如maxminsorted等内置函数,具体使用方法灵活多样,可以根据具体情况进行选择

    38610
    领券