python学习笔记_week27

 

search
 1 import time
 2 import random
 3 def cal_time(func):
 4     def wrapper(*args, **kwargs):
 5         t1 = time.time()
 6         result = func(*args, **kwargs)
 7         t2 = time.time()
 8         print("%s running time: %s secs." % (func.__name__, t2 - t1))
 9         return result
10     return wrapper
11 @cal_time
12 def bin_search(data_set, val):
13     low = 0
14     high = len(data_set) - 1
15     while low <= high:
16         mid = (low+high)//2
17         if data_set[mid] == val:
18             return mid
19         elif data_set[mid] < val:
20             low = mid + 1
21         else:
22             high = mid - 1
23     return
24 def binary_search(dataset, find_num):
25     if len(dataset) > 1:
26         mid = int(len(dataset) / 2)
27         if dataset[mid] == find_num:
28             #print("Find it")
29             return dataset[mid]
30         elif dataset[mid] > find_num:
31             return binary_search(dataset[0:mid], find_num)
32         else:
33             return binary_search(dataset[mid + 1:], find_num)
34     else:
35         if dataset[0] == find_num:
36             #print("Find it")
37             return dataset[0]
38         else:
39             pass
40             #print("Cannot find it.")
41 @cal_time
42 def binary_search_alex(data_set, val):
43     return binary_search(data_set, val)
44 def random_list(n):
45     result = []
46     ids = list(range(1001,1001+n))
47     a1 = ['zhao','qian','sun','li']
48     a2 = ['li','hao','','']
49     a3 = ['qiang','guo']
50     for i in range(n):
51         age = random.randint(18,60)
52         id = ids[i]
53         name = random.choice(a1)+random.choice(a2)+random.choice(a3)
54 data = list(range(100000))
55 print(bin_search(data,69 ))
56 print(binary_search_alex(data,69 ))
View Code
sort
 1 import random
 2 import time
 3 import copy
 4 import sys
 5 def cal_time(func):
 6     def wrapper(*args, **kwargs):
 7         t1 = time.time()
 8         result = func(*args, **kwargs)
 9         t2 = time.time()
10         print("%s running time: %s secs." % (func.__name__, t2 - t1))
11         return result
12     return wrapper
13 @cal_time
14 def bubble_sort(li):
15     for i in range(len(li) - 1):
16         for j in range(len(li) - i - 1):
17             if li[j] > li[j+1]:
18                 li[j], li[j+1] = li[j+1], li[j]
19 @cal_time
20 def bubble_sort_1(li):
21     for i in range(len(li) - 1):
22         exchange = False
23         for j in range(len(li) - i - 1):
24             if li[j] > li[j+1]:
25                 li[j], li[j+1] = li[j+1], li[j]
26                 exchange = True
27         if not exchange:
28             break
29 def select_sort(li):
30     for i in range(len(li) - 1):
31         min_loc = i
32         for j in range(i+1,len(li)):
33             if li[j] < li[min_loc]:
34                 min_loc = j
35         li[i], li[min_loc] = li[min_loc], li[i]
36 def insert_sort(li):
37     for i in range(1, len(li)):
38         tmp = li[i]
39         j = i - 1
40         while j >= 0 and li[j] > tmp:
41             li[j+1]=li[j]
42             j = j - 1
43         li[j + 1] = tmp
44 def quick_sort_x(data, left, right):
45     if left < right:
46         mid = partition(data, left, right)
47         quick_sort_x(data, left, mid - 1)
48         quick_sort_x(data, mid + 1, right)
49 def partition(data, left, right):
50     tmp = data[left]
51     while left < right:
52         while left < right and data[right] >= tmp:
53             right -= 1
54         data[left] = data[right]
55         while left < right and data[left] <= tmp:
56             left += 1
57         data[right] = data[left]
58     data[left] = tmp
59     return left
60 @cal_time
61 def quick_sort(data):
62     return quick_sort_x(data, 0, len(data) - 1)
63 @cal_time
64 def sys_sort(data):
65     return data.sort()
66 def sift(data, low, high):
67     i = low
68     j = 2 * i + 1
69     tmp = data[i]
70     while j <= high: #只要没到子树的最后
71         if j < high and data[j] < data[j + 1]:
72             j += 1
73         if tmp < data[j]:#如果领导不能干
74             data[i] = data[j] #小领导上位
75             i = j
76             j = 2 * i + 1
77         else:
78             break
79     data[i] = tmp
80 def heap_sort(data):
81     n = len(data)
82     for i in range(n // 2 - 1, -1, -1):
83         sift(data, i, n - 1)
84         for i in range(n - 1, -1, -1):
85             data[0], data[i] = data[i], data[0]
86             sift(data, 0, i - 1)
87 sys.setrecursionlimit(100000)
88 data = list(range(1000, 1, -1))
89 data.sort()
90 #random.shuffle(data)
91 data1 = copy.deepcopy(data)
92 data2 = copy.deepcopy(data)
93 data3 = copy.deepcopy(data)
94 bubble_sort(data1)
95 quick_sort(data2)
96 sys_sort(data3)
View Code

PPT

posted on 2018-01-24 19:39  我很好u 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jyh-py-blog/p/8343231.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值