鱼C论坛

 找回密码
 立即注册
查看: 1012|回复: 4

[已解决]selection sort python 寫法

[复制链接]
发表于 2021-12-22 00:29:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想請教一下 selection sort python 的程式寫法
目標需求:
1.能讓使用者自由輸入 5 個以上個數字進行排序
2.將排序的過程都 print 出來
3.如果要加入 wall 要如何加入,用處是什麼(非必要)
4.不使用內置函數( example : sort )
5.希望各位朋友們能註解給我看,剛學不太理解原理
6.再次感謝能抽空幫助我的朋友!
最佳答案
2021-12-22 14:30:37
caspar1 发表于 2021-12-22 14:12
我想問一下如果是用input 的方式讓使用者自由輸入要怎麼加入 妳打的程式都很完整很感謝


def selectionSort(arr):
        last = len(arr)
        print(*arr)
        for current in range(last-1): # 从位置 0 开始循环
                smallest = current
                for walker in range(current+1, last):
                        if(arr[walker] < arr[smallest]): # 当发现比当前位置的元素更小的值时
                                smallest = walker
                        arr.insert(current, arr[smallest]) # 将最小值插入正确位置
                        a = arr.pop(smallest+1) # 删除原本位置的最小值
                print(*arr)


selectionSort(list(map(int, input("enter all the numbers: ").split()))) # 输入数值以空格隔开
enter all the numbers: 15 6 78 96 35 44
15 6 78 96 35 44
6 15 78 96 35 44
6 15 78 96 35 44
6 15 44 35 78 96
6 15 44 35 78 96
6 15 44 35 78 96
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-22 09:17:58 From FishC Mobile | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-12-22 09:30 编辑

这样可以吗?
def selectionSort(*args):
        arr = list(args) # 将参数变成列表
        last = len(arr)
        print(*arr)
        for current in range(last-1): # 从位置 0 开始循环
                smallest = current
                for walker in range(current+1, last):
                        if(arr[walker] < arr[smallest]): # 当发现比当前位置的元素更小的值时
                                smallest = walker
                        arr.insert(current, arr[smallest]) # 将最小值插入正确位置
                        a = arr.pop(smallest+1) # 删除原本位置的最小值
                print(*arr)

selectionSort(13, 5, 176, 89, 3)
13 5 176 89 3
3 13 5 176 89
3 5 13 176 89
3 5 13 176 89
3 5 13 89 176
3 5 13 89 176
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-22 14:12:38 From FishC Mobile | 显示全部楼层
傻眼貓咪 发表于 2021-12-22 09:17
这样可以吗?

我想問一下如果是用input 的方式讓使用者自由輸入要怎麼加入 妳打的程式都很完整很感謝
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-22 14:30:37 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
caspar1 发表于 2021-12-22 14:12
我想問一下如果是用input 的方式讓使用者自由輸入要怎麼加入 妳打的程式都很完整很感謝


def selectionSort(arr):
        last = len(arr)
        print(*arr)
        for current in range(last-1): # 从位置 0 开始循环
                smallest = current
                for walker in range(current+1, last):
                        if(arr[walker] < arr[smallest]): # 当发现比当前位置的元素更小的值时
                                smallest = walker
                        arr.insert(current, arr[smallest]) # 将最小值插入正确位置
                        a = arr.pop(smallest+1) # 删除原本位置的最小值
                print(*arr)


selectionSort(list(map(int, input("enter all the numbers: ").split()))) # 输入数值以空格隔开
enter all the numbers: 15 6 78 96 35 44
15 6 78 96 35 44
6 15 78 96 35 44
6 15 78 96 35 44
6 15 44 35 78 96
6 15 44 35 78 96
6 15 44 35 78 96
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-23 12:54:41 | 显示全部楼层

好感謝你 我來研究一下 太厲害了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 12:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表