随机生成包含10000个范围(0,65536)的随机数(int),然后我就被打击了...
from random import randint
import time, datetime, copy
list = [randint(0, 65536) for i in xrange(10000)]
list1 = copy.deepcopy(list)
list2 = copy.deepcopy(list)
list3 = copy.deepcopy(list)
n = len(list)
time1 = time.time()
for i in xrange(n):
for j in xrange(i, n):
if(list[i] > list[j]):
temp = list[j]
list[j] = list[i]
list[i] = temp
print list
time2 = time.time()
time11 = time2 - time1
print time11
result = []
time3 = time.time()
for i in xrange(n):
max_element = max(list1)
del list1[list1.index(max_element)]
result.append(max_element)
time4 = time.time()
time12 = time4 - time3
print time12
def QuickSort(value, left, right):
if(left < right):
key = value[left]
low = left
high = right
while(low < high):
while((low < high) & (value[high] >= key)):
high -= 1
value[low] = value[high]
while((low < high) & (value[low] <= key)):
low += 1
value[high] = value[low]
value[low] = key
QuickSort(value, left, low - 1)
QuickSort(value, low + 1, right)
time5 = time.time()
QuickSort(list2, 0, n - 1)
time6 = time.time()
time13 = time6 - time5
print time13
print time12 / time13
time7 = time.time()
list3 =sorted(list3)
time8 = time.time()
time14 = time8 - time7
print time14
总结:
(1)能用for循环的时候,就不要用while循环。
(2)有时候我们需要在代码简洁和程序效率之间做成平衡。。
(3)Python自带的sorted()函数和列表的sort()方法更为强大
联系客服