排序算法之Python章

发布于 15 天前  40 次阅读


这是关于python实现的排序算法

一.冒泡算法

  1. 构建列表数组:
sum = list(map(int,input().strip().split()))
#这个用来构建一个数组

split()方法用于分割字符串,并把默认以空格分隔,返回值使list
strip()方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
比如:
" Hello python ".strid()
可以把Hello前面的空格去除和python后面的空格也去除
至此,我们就通过map高阶函数把输入的"数字"变成 数字
2. 算法:

i,j = 0,0
while (j<len(num)):
    i = j
    while (i < len(num)-1):
        if num[i] > num[i+1]:
            num[i],num[i+1] = num[i+1],num[i]
        i += 1

    j += 1

算法是通过一次次迭代,第一次迭代把最大的数放在最后,第二次把第二大的数放在最后,从而只要n-1次迭代就可完成排序。
具体是通过第一个数与第二个数比较,如果第一个大,就把第一个与第二个交换,然后再判断第二个与第三个,直到n-1与n的大小
然后第二次迭代直到 n-1 , 第三次迭代是到 n-2 ...

3.总代码:

#这是排序算法之 冒泡算法

num = list(map(int,input("请输入数字,并以空格作为间隔:").strip().split()))
i,j = 0,0
while (j<len(num)):
    i = j
    while (i < len(num)-1):
        if num[i] > num[i+1]:
            num[i],num[i+1] = num[i+1],num[i]
        i += 1

    j += 1

for i in num:
    print(i,end=" ")

二.选择排序

1.构建数组:
同上~~~

2.算法:

i,raw = 0,0
while (raw < len(sum)-1):
    min = raw
    i = raw
    while (i < len(sum)):
        if (sum[min] > sum[i]):
            min = i
        i += 1
    if (min != raw):
        sum[min],sum[raw] = sum[raw],sum[min]
    raw += 1

这个是选择排序,记录每一次的最小值的序列,然后再每一次的遍历尾部,让首位与最小值交换。

3.总代码:

#排序算法之 选择排序
sum = list(map(int,input("请输入数字,每个数字之间用空格隔开:").strip().split()))
#这是创建一个数组
i,raw = 0,0
while (raw < len(sum)-1):
    min = raw
    i = raw
    while (i < len(sum)):
        if (sum[min] > sum[i]):
            min = i
        i += 1
    if (min != raw):
        sum[min],sum[raw] = sum[raw],sum[min]
    raw += 1

for i in sum:
    print(i,end=' ')

公交车司机终于在众人的指责中将座位让给了老太太