无名商城论坛

搜索
查看: 283|回复: 0

[其他技术] 【HC】python几种排序方法

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 18:32:42 | 显示全部楼层 |阅读模式
‘’'选择排序法和冒泡法其实有一点点相似,其原理是:
1、选取一个(第一次为首元素)元素作为最小(最大)元素;
2、记住该元素下角标min
3、将该元素与余下的元素作比较,若遇到比该元素小(大)的元素,就与min交换值
5、循环n-1次

class Selection():
    def selection_sort(self,nums):
        for i in range(0,len(nums)-1):
            min_=i
            for j in range(i+1,len(nums)):
                if nums[j]=0 and nums[j]>intermediate:#比较左一位与中间变量的值,如果左面大:
                nums[j+1]=nums[j]#:就将左值赋给右边一位,这里不用担心右面一位的值没有保留,而是在中间变量中
                j=j-1#将j值减小一个,向左移一位,继续比较
            nums[j+1]=intermediate#循环结束后,记得把中间变量的值赋给nums[j+1]
        return nums

希尔排序法
仔细看代码,看得懂。其实我不知道这是不是希尔排序。。。

class ShellSort():
    def shell_sort(self,nums):
        chunt=int(len(nums)/2)
        while chunt>=1:
            i=0
            while i+chuntnums[i+chunt]:
                    print("nums[%d]=%d,nums[%d+%d]=%d"%(i,nums,i,chunt,nums[i+chunt]))
                    nums,nums[i+chunt]=nums[i+chunt],nums
                i+=1
                if i>len(nums):
                    break
            chunt-=1
        for i in range(0,len(nums)-1):#这里不要问我为什么,有时候有问题是难免的,找个办法解决就好了
            print(i)
            if nums>nums[i+1]:
                nums,nums[i+1]=nums[i+1],nums
        return nums
回复

使用道具 举报

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

本版积分规则

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