python基础练习题(题目 有序列表插入元素)

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)

答案是考虑递增的情况,首先判断此数是否大于最后一个数,如果大于就切换对应的位置,最后最大的数一定在末尾,即排序完毕。

上一篇:CF650D Zip-line


下一篇:学习总结-10.2