鱼C论坛

 找回密码
 立即注册
查看: 1171|回复: 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 的方式讓使用者自由輸入要怎麼加入 妳打的程式都很完整很感謝


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


  12. selectionSort(list(map(int, input("enter all the numbers: ").split()))) # 输入数值以空格隔开
复制代码
  1. enter all the numbers: 15 6 78 96 35 44
  2. 15 6 78 96 35 44
  3. 6 15 78 96 35 44
  4. 6 15 78 96 35 44
  5. 6 15 44 35 78 96
  6. 6 15 44 35 78 96
  7. 6 15 44 35 78 96
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

  13. selectionSort(13, 5, 176, 89, 3)
复制代码
  1. 13 5 176 89 3
  2. 3 13 5 176 89
  3. 3 5 13 176 89
  4. 3 5 13 176 89
  5. 3 5 13 89 176
  6. 3 5 13 89 176
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我想問一下如果是用input 的方式讓使用者自由輸入要怎麼加入 妳打的程式都很完整很感謝
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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


  12. selectionSort(list(map(int, input("enter all the numbers: ").split()))) # 输入数值以空格隔开
复制代码
  1. enter all the numbers: 15 6 78 96 35 44
  2. 15 6 78 96 35 44
  3. 6 15 78 96 35 44
  4. 6 15 78 96 35 44
  5. 6 15 44 35 78 96
  6. 6 15 44 35 78 96
  7. 6 15 44 35 78 96
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好感謝你 我來研究一下 太厲害了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 18:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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