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