python中输入n个整数、请把这n个数由小到大排序_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

记得看他的这篇文章之前看一下下方的评论,文中可能有描述错误的地方,(不知道现在改了没有)。


版权声明:本文为weixin_39778400原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>