tencentma 发表于 2022-9-12 12:45

python 选择排序代码求解读

下面的代码请大神帮忙解读,没看懂,谢谢。
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
import sys
A =

for i in range(len(A)):
      
   
    min_idx = i
    for j in range(i+1, len(A)):
      if A > A:
            min_idx = j
               
    A, A = A, A

print ("排序后的数组:")
for i in range(len(A)):
    print("%d" %A),

默不言 发表于 2022-9-12 13:36

本帖最后由 默不言 于 2022-9-12 13:38 编辑

个人的一些见解,我也是小白,不足之处,请指出。

```
import sys
A =

for i in range(len(A)):   #对列表A进行循环取值
      
   
    min_idx = i   # 值相对小的索引值赋值给min_idx
    for j in range(i+1, len(A)):    # 对第i个值之后的值进行循环取值
      if A > A:   #   将第i个值和第i+1之后的值进行对比,确定大小,这里会将小值取出来,并且可以判断出大值和小值
            min_idx = j             #   最小值的索引值赋值给min_idx
               
    A, A = A, A   #   将相对较小的值替换为索引为i的值,较大的值替换为索引为i+1的值,相当于把 32,25 位置对换,变成25,32
   
print ("排序后的数组:")
for i in range(len(A)):   #   这里的列表A是已经调整好顺序的列表(相当于新列表:A =
    print("%d" %A),      #   标准化逐行输出排序后的列表A,这里的“,”不应该出现,标准化输出,建议使用format函数
```

梦汐 发表于 2022-9-12 13:42

双重循环,比对大小,大于则置索引为0

tyut2022 发表于 2022-9-12 15:28

单纯的学习学习

lovejun 发表于 2022-9-12 17:17

选择排序,双重遍历,第一层遍历表示选择最小值的范围,第二层遍历表示选择最小值的过程

甜萝 发表于 2022-9-12 18:37

# import sys 这行代码是多余的
A =             # A是一个乱序的列表 既不是从小到大排序 也不是从大到小排序
   
for i in range(len(A)):             # 外层for循环 遍历列表中的五个元素 len(A)的长度为列表中的元素个数
      
   
    min_idx = i                     # 取列表中的第一个值 假设它是最小的 虽然实际上不是的
    for j in range(i+1, len(A)):    # 内层循环 循环次数为未排好序的元素个数
      if A > A:       # 进行比较 拿min_idx与j比较 如果min_idx大于j min_idx的值就为j
            min_idx = j
               
    A, A = A, A # 进行交换
   
print ("排序后的数组:")
for i in range(len(A)):
    print("%d" %A)

Wisdom_xiaogui 发表于 2022-9-12 22:07

```python
# 选择排序,就是两个for循环,第一个for是有多少个元素,就比较多少次,形成有序列表。第二个for是从剩下无序列表中找到最小的值,加入到有序列表中。
# 即你可以看成是一个有序链表+无序链表
A =             # A是一个乱序的列表
   
for i in range(len(A)):             # 外层for循环,遍历列表中的五个元素,从0到len(A)即5,不包含5,即0到4
      
   
    min_idx = i                     # 取出列表下标
    for j in range(i+1, len(A)):    # 内层循环 从剩下无序列表中找到最小的值,加入到有序列表中
      if A > A:       # 进行比较 如果无序列表中有比设定的最小值还有小,则更新最下值下标。
            min_idx = j
                  
    A, A = A, A # 将找到的最小值加入到有序列表中,将之前设置的最小值赋给无序列表的最小下标值
   
print ("排序后的数组:")
for i in range(len(A)):
    print("%d" %A)

# 可以参考这篇文章
# https://www.runoob.com/w3cnote/selection-sort.html
```

fanvalen 发表于 2022-9-12 22:16

这个是冒泡排序吗

SLCoCo 发表于 2022-9-13 23:47

一个图看懂
https://img-blog.csdnimg.cn/20210711213326712.gif

bitterain 发表于 2022-9-16 18:10

SLCoCo 发表于 2022-9-13 23:47
一个图看懂

正解。不知道这位吾爱同仁,这图是在哪找到的呀,可否共享,谢谢。
页: [1] 2
查看完整版本: python 选择排序代码求解读