python菜鸟教程

37 排序

题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

使用内置函数.sort()

a = [1,23,45,12,24,45,5,3,9,10]
a.sort() #.sort()用于排序
print(a)

比较法排序:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

if __name__ == "__main__":  #该函数不能调用
    N = 4
    # input data
    print('请输入 %d 个数字:' % N)
    l = []  #新建一个空的列表
    for i in range(N):  #循环的方式输入10个数字进列表
        l.append(int(input('输入一个数字:>\n'))) #循环将输入的字符串进行整数化int
    print(l)

    # 比较法排列N个数字1
    for i in range(N - 1):
        min = i
        for j in range(i + 1, N):
            if l[min] > l[j]: min = j
        l[i], l[min] = l[min], l[i]
    print('排列之后:')
    for i in range(N):
        print(l[i])

请输入 4 个数字:

输入一个数字:>

2

输入一个数字:>

3

输入一个数字:>

4

输入一个数字:>

5

[2, 3, 4, 5]

排列之后:

2

3

4

5

39 一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

程序源代码:

if __name__ == '__main__':
    # 方法一 : 0 作为加入数字的占位符
    a = [1, 4, 6, 9, 13, 16, 19, 28, 40, 100, 0]
    print('原始列表:')
    for i in range(len(a)):
        print(a[i])
    number = int(input("\n插入一个数字:\n"))
    end = a[9]
    if number > end:
        a[10] = number
    else:
        for i in range(10):
            if a[i] > number:
                temp1 = a[i]
                a[i] = number
                for j in range(i + 1, 11):
                    temp2 = a[j]
                    a[j] = temp1
                    temp1 = temp2
                break
    print('排序后列表:')
    for i in range(11):
        print(a[i])

原始列表:

1

4

6

9

13

16

19

28

40

100

0

插入一个数字:

5

排序后列表:

1

4

5

6

9

13

16

19

28

40

100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值