菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 3 教程
Python3 教程 Python3 简介 Python3 环境搭建 Python3 VScode Python3 基础语法 Python3 基本数据类型 Python3 数据类型转换 Python3 解释器 Python3 注释 Python3 运算符 Python3 数字(Number) Python3 字符串 Python3 列表 Python3 元组 Python3 字典 Python3 集合 Python3 条件控制 Python3 循环语句 Python3 编程第一步 Python3 推导式 Python3 迭代器与生成器 Python3 with Python3 函数 Python3 lambda Python3 装饰器 Python3 数据结构 Python3 模块 Python __name__ Python3 输入和输出 Python3 File Python3 OS Python3 错误和异常 Python3 面向对象 Python3 命名空间/作用域 Python 虚拟环境的创建 Python 类型注解 Python3 标准库概览 Python3 实例 Python 测验

Python3 高级教程

Python3 正则表达式 Python3 CGI编程 Python3 MySQL(mysql-connector) Python3 MySQL(PyMySQL) Python3 网络编程 Python3 SMTP发送邮件 Python3 多线程 Python3 XML 解析 Python3 JSON Python3 日期和时间 Python3 内置函数 Python3 MongoDB Python3 urllib Python uWSGI 安装配置 Python3 pip Python3 operator Python math Python requests Python random Python OpenAI Python 有用的资源 Python AI 绘画 Python statistics Python hashlib Python 量化 Python pyecharts Python selenium 库 Python 爬虫 Python Scrapy 库 Python Markdown Python sys 模块 Python Pickle 模块 Python subprocess 模块 Python queue 模块 Python StringIO 模块 Python logging 模块 Python datetime 模块 Python re 模块 Python csv 模块 Python threading 模块 Python asyncio 模块 Python PyQt Python for 循环 Python while 循环
(追記) (追記ここまで)

Python 选择排序

Document 对象参考手册 Python3 实例

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

实例

importsysA = [64, 25, 12, 22, 11]foriinrange(len(A)): min_idx = iforjinrange(i+1, len(A)): ifA[min_idx] > A[j]: min_idx = jA[i], A[min_idx] = A[min_idx], A[i]print("排序后的数组:")foriinrange(len(A)): print("%d" %A[i]),

执行以上代码输出结果为:

排序后的数组:
11
12
22
25
64

Document 对象参考手册 Python3 实例

AI 思考中...

4 篇笔记 写笔记

  1. #0

    小花花

    124***[email protected]

    23

    简单的方法更好用,简单的问题也不容易发现。第二个函数的交换位置我想了很久。

    """选择排序
    Selectionsort.py"""
    # 以序号为依据
    def Selectionsort1():
     A = [-9, -8, 640, 25, 12, 22, 33, 23, 45, 11, -2, -5, 99, 0]
     for i in range(len(A)):
     min = i
     for j in range(i + 1, len(A)): # 上一个值右边的数组
     if A[min] > A[j]: # 使min为最小值,遇到比min小的值就赋值于min
     min = j
     A[i], A[min] = A[min], A[i] # 交换最小值到左边
     print ('Selectionsort1排序后的数组:', A)
    # 以数值为依据
    def Selectionsort2():
     A = [-9, -8, 640, 25, 12, 22, 33, 23, 45, 11, -2, -5, 99, 0]
     counter = 0 # 记录循环次数和位置
     array = []
     for i in A:
     counter += 1
     for j in A[counter:]: # 缩小范围
     if i > j: # 使i为最小值
     i = j
     A.remove(i)
     A.insert(counter - 1, i)
     # 把最小值置于列表左边,避免重复比较
     array.append(i)
     print('Selectionsort2排序后的数组:', array)
    Selectionsort1()
    Selectionsort2()

    小花花

    124***[email protected]

    7年前 (2019年07月14日)
  2. #0

    JonnyHuang

    joo***[email protected]

    13

    可选择升序和降序。

    #待排序数组arr,排序方式order>0升序,order<0降序
    def selectSort(arr,order):
     rborder = len(arr)
     for i in range(0,rborder):
     p = i
     j = i+1
     while(j<rborder):
     if((arr[p]>arr[j]) and (int(order)>0)) or ((arr[p]<arr[j]) and (int(order)<0)):
     p = j
     j += 1
     arr[i], arr[p] = arr[p], arr[i]
     i += 1
     return arr
    A = [64, 25, 12, 22, 11] 
    print(selectSort(A, -1))
    print(selectSort(A, 1))

    JonnyHuang

    joo***[email protected]

    7年前 (2019年07月21日)
  3. #0

    jackiehuang

    jac***[email protected]

    34

    用內建函式找出最小或最大值(max)位置:

    def selection_sort(arr):
     for i in range(len(arr)):
     index=i+arr[i:].index(min(arr[i:]))
     arr[i],arr[index]=arr[index],arr[i] 
     return arr
    A = [64, 25, 12, 22, 11] 
    print(selection_sort(A))
    

    jackiehuang

    jac***[email protected]

    6年前 (2020年09月29日)
  4. #0

    sky

    127***[email protected]

    5

    分清比较的值然后交换,逐渐会将最小值换到前面:

    #!/usr/bin/python3
    import sys
    l=[2,5,1,4,6,9,3,0,8,7]
    for a in range(len(l)):
     for b in range(a+1,len(l)):
     if l[a]>l[b]:
     l[a],l[b]=l[b],l[a]
     print(l)
    

    输出结果显示如下:

    [0, 5, 2, 4, 6, 9, 3, 1, 8, 7]
    [0, 1, 5, 4, 6, 9, 3, 2, 8, 7]
    [0, 1, 2, 5, 6, 9, 4, 3, 8, 7]
    [0, 1, 2, 3, 6, 9, 5, 4, 8, 7]
    [0, 1, 2, 3, 4, 9, 6, 5, 8, 7]
    [0, 1, 2, 3, 4, 5, 9, 6, 8, 7]
    [0, 1, 2, 3, 4, 5, 6, 9, 8, 7]
    [0, 1, 2, 3, 4, 5, 6, 7, 9, 8]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    sky

    127***[email protected]

    4年前 (2022年05月31日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /