caspar1 发表于 2021-12-22 00:29:14

selection sort python 寫法

我想請教一下 selection sort python 的程式寫法
目標需求:
1.能讓使用者自由輸入 5 個以上個數字進行排序
2.將排序的過程都 print 出來
3.如果要加入 wall 要如何加入,用處是什麼(非必要)
4.不使用內置函數( example : sort )
5.希望各位朋友們能註解給我看,剛學不太理解原理
6.再次感謝能抽空幫助我的朋友!

傻眼貓咪 发表于 2021-12-22 09:17:58

本帖最后由 傻眼貓咪 于 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 < arr): # 当发现比当前位置的元素更小的值时
                                smallest = walker
                        arr.insert(current, arr) # 将最小值插入正确位置
                        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

caspar1 发表于 2021-12-22 14:12:38

傻眼貓咪 发表于 2021-12-22 09:17
这样可以吗?

我想問一下如果是用input 的方式讓使用者自由輸入要怎麼加入 妳打的程式都很完整很感謝

傻眼貓咪 发表于 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 < arr): # 当发现比当前位置的元素更小的值时
                                smallest = walker
                        arr.insert(current, arr) # 将最小值插入正确位置
                        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

caspar1 发表于 2021-12-23 12:54:41

傻眼貓咪 发表于 2021-12-22 14:30


好感謝你 我來研究一下 太厲害了
页: [1]
查看完整版本: selection sort python 寫法