数组中的一组数据排序,如数组 [1,10,2,2,3,4,8,7,45,5,100],可以用三种方法:
一、最简单的方法,使用Sort命令。优点是简洁,缺点是改变了原有数据结构。
unsorted = [1, 10, 2, 2, 3, 4, 8, 7, 45, 5, 100]
unsorted.sort()
print('the original array', '"unsorted" = ', unsorted)
打印结果:
the original array "unsorted" = [1, 2, 2, 3, 4, 5, 7, 8, 10, 45, 100]
二、再使用min命令,通过不断找最小值
unsorted = [1, 10, 2, 2, 3, 4, 8, 7, 45, 5, 100]
sorted = [] # 建一个空数组,以把排序好的数值存入
for i in range(0, len(unsorted)):
y = min(unsorted) # 找出 a 中的最小值
sorted.append(y) # 把最小值赋予到 B 中
unsorted.remove(y) # 把最小值从 a 中删除
print('the original array', '"unsorted" = ', unsorted)
print('the new array', '"sorted" = ', sorted)
打印结果:
the original array "unsorted" = []
the new array "sorted" = [1, 2, 2, 3, 4, 5, 7, 8, 10, 45, 100]
三、上面两个方法,如同在解答鸡鸭同笼问题时,使用方程式。让我们在用小学生解题思路做一遍。
unsorted = [1, 10, 2, 2, 3, 4, 8, 7, 45, 5, 100]
sorted = []
for i in range(0, len(unsorted)):
sorted.append(unsorted[i]) # 先数组sort中的数值换成unsort一样
for i in range(0, len(unsorted)): # 第一个循环:保证unsorted数组中的每一个数值都可被取到
num = 0 # num用于记录排序的序号
for x in range(0, len(unsorted)): # 第二个循环:保证unsorted数组中的每一个数值都会与其它数值比大小
if unsorted[i] > unsorted[x]: # 比大小,如果数值比其它数值大,就加 1
num += 1
sorted[num] = unsorted[i]
print('the original array', '"unsorted" = ', unsorted)
print('the new array', '"sorted" = ', sorted)
打印结果:
the original array "unsorted" = [1, 10, 2, 2, 3, 4, 8, 7, 45, 5, 100]
the new array "sorted" = [1, 2, 2, 3, 4, 5, 7, 8, 10, 45, 100]