python练习5:输入三个整数 x,y,z,请把这三个数由小到大输出。

输入三个整数 x,y,z,请把这三个数由小到大输出。

排序最简单的就是直接调用内置函数sort()
通过input()函数获取x,y,z将他们存入列表list
然后调用list.sort()进行排序

# 输入三个整数 x,y,z,请把这三个数由小到大输出。

x = input('请输入x:')
y = input('请输入y:')
z = input('请输入z:')

# list = []   #先定义列表才能使用append()方法 只有列表才可以使用append方法,没声明之前解释器无法判断类型为列表,而是字符型
# list.append(x,y,z)   #append()方法只能有一个参数
list = [x,y,z]  #直接给list赋值
print('排序前:',list)

list.sort()     #sort()是内置的排序函数,可以排序字符类型。 默认为升序
print('升序:',list)

list.sort(reverse=True)    # 如果需要降序排列,则需要传递一个reverse=True作为参数
print('降序:',list)


因为这个题用到了排序,我就想练习一下常用的排序方法,说是练习实际上因为很久不使用已经快忘了,所以最近也看了下原理试着写了出来,
(1)冒泡排序

def BubbleSort(self):
    list_len = len(self)

    for i in range(list_len):
        for j in range(list_len - 1):
            if self[j] > self[j + 1]:
                self[j], self[j + 1] = self[j + 1], self[j]

    print('冒泡排序:', self)


# BubbleSort(list)

(2)选择排序

def SelectionSort(self):
    list_len = len(self)
    for i in range(list_len):
        for j in range(i + 1, list_len):
            if self[i] > self[j]:
                self[i], self[j] = self[j], self[i]
    print('选择排序:', self)

# SelectionSort(list)

(3)插入排序

def InsertionSort(self):
    list_len = len(self)
    # for i in range(list_len-1):
    #     for j in range(list_len):
    #         if self[i] < self[j] and self[i] < self[j - 1]:
    #             self[j], self[i] = self[i], self[j]
    #         elif self[j] < self[i] and self[j] > self[i - 1]:
    #             self[j], self[i - 1] = self[i - 1], self[j]
    #         else:
    #             break
    for i in range(list_len):  # 0-14
        j = i
        for x in range(i):
            if self[j] < self[j - 1]:
                self[j], self[j - 1] = self[j - 1], self[j]
                j = j - 1
                while self[j] > self[j - 1] and self[j] < self[j + 1]:
                    break
    print('插入排序:', self)

# InsertionSort(list)

(4)希尔排序

def ShellSort(self):
    list_len = len(self)
    increment = list_len

    while increment >= 2:
        increment = increment//2
        print(increment)
        # print(self)
        for j in range(increment, list_len):
            # print(self)
            print(increment)
            while j - increment >= 0:
                print(self)
                if self[j] < self[j - increment]:
                    # print(self)
                    self[j], self[j - increment] = self[j - increment], self[j]
                    j -= increment
                else:
                    break


    print('希尔排序:', self)


# ShellSort(list)

希尔排序是一种优化的排序方法,他的时间复杂度不是O(N²),而是根据增量increment计算的

总结:我只用了四种排序方式,并且在运行定义的方法的时候要确保上一个方法注释没有被运行,不然可能会和我一样以为自己写的方法是正确的,第二次使用时候发现不正确。

我自己试着写出来的时候也参考了其他人的代码,至于原理是这个博主的,它使用的是java代码
https://blog.csdn.net/liang_gu/article/details/80627548
记得看他的这篇文章之前看一下下方的评论,文中可能有描述错误的地方,(不知道现在改了没有)。

  • 19
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值