day26
---------------------------------------------------------------
实例039:有序列表插入元素
题目 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
分析:原来的排序规律不知道,所以先判断原来的数组规律,再循环比对
1 def insert_arry(list, a): 2 if list[0]<=list[-1]: 3 for i in range(len(list)): 4 if list[i] <= a: 5 continue 6 else: 7 list.insert(i,a) 8 break 9 else: 10 for i in range(len(list)): 11 if list[i] >= a: 12 continue 13 else: 14 list.insert(i, a) 15 break 16 return list 17 lis1 = [1,2,3,4,5,6,7,8,9] 18 lis2 = [9,8,7,6,5,4,3,2,1] 19 list = insert_arry(lis1, 7) 20 print(list)
总感觉我的代码很冗余,但是又想不出怎么优化。。。
看看答案:
1 lis=[1,10,100,1000,10000,100000] 2 n=int(input('insert a number: ')) 3 lis.append(n) 4 for i in range(len(lis)-1): 5 if lis[i]>=n: 6 for j in range(i,len(lis)): 7 lis[j],lis[-1]=lis[-1],lis[j] 8 break 9 print(lis)
答案是考虑递增的情况,首先判断此数是否大于最后一个数,如果大于就切换对应的位置,最后最大的数一定在末尾,即排序完毕。