A participé aujourd'hui à l'épreuve écrite, EMMMMMMM, a poursuivi ses efforts durs.
Bonne habitude: la pensée claire peut rendre le code prototypage rapide. commentons au code de rendre plus lisibles possèdent. Préparer les bons outils pour faire un tableau pour expliquer ou de la figure d'action.
1, sorte de seau
« » «
Idées: Ceci est un tableau d'entiers, pour trouver la valeur maximale, réglage (max + 1) ième seau vide pour commencer à courir le tableau original baignoire correspondant (indice = num) a ensuite été retiré du seau.
» " "
def bucket_sort_func(arr):
if len(arr) < 2:
return arr
max_arr = max(arr)
# 放空桶
bucket = [0 for _ in range(max_arr+1)]
for num in arr:
bucket[num] += 1
sort_arr = []
for i in range(len(bucket)):
if bucket[i] != 0:
for ele in range(bucket[i]):
sort_arr.append(i)
return sort_arr
# 放回原数组
def bucket_sort(arr):
res = bucket_sort_func(arr)
for i in range(len(arr)):
arr[i] = res[i]
2, heapsort
« » « Des
idées: tout d' abord comprendre ce qui est la grande racine du tas, un processus racine gros tas de construction, le processus de réparation d' un grand tas racine
« »"
def heap_sort(arr):
if len(arr) < 2:
return arr
for i in range(len(arr)):
heap_insert(arr, i)
size = len(arr)
size -= 1
arr[0], arr[size] = arr[size], arr[0]
while size > 0:
heapify(arr, 0, size)
size -= 1
arr[0], arr[size] = arr[size], arr[0]
def heap_insert(arr, index):
# 构造大根堆
# 出现一个BUG,最后一个数没有排好,问题见以下描述。必须要int,整除不可以!
# index = 0
# a = int((index - 1) / 2)
# b = (index - 1) // 2
# print(a, b) 打印结果 a=0,b=-1
# while arr[index] > arr[((index-1)//2)]:
# arr[index], arr[((index-1)//2)] = arr[((index-1)//2)], arr[index]
# index = ((index-1)//2)
while arr[index] > arr[int((index-1)/2)]:
arr[index], arr[int((index-1)/2)] = arr[int((index-1)/2)], arr[index]
index = int((index-1)/2)
def heapify(arr, index, size):
# 调节大根堆
left = index*2 + 1
while left < size:
if (left+1) < size and arr[left+1] > arr[left]:
largest = left + 1
else:
largest = left
if arr[largest] > arr[index]:
largest = largest
else:
largest = index
if largest == index:
break
arr[largest], arr[index] = arr[index], arr[largest]
index = largest
left = index*2 + 1
3, seau étendre tri
A Titre: Étant donné un tableau d'entiers, le cas échéant, après le tri, la différence entre deux nombres maximum de O adjacent de la complexité du temps nécessaire (N), et la demande ne peut pas être comparée à une base de non-tri.
« » «
Ideas: Le max et min décharge seau vide, le godet qui peut inclure de déterminer si la valeur booléenne est vide, mettre au minimum, maximum, à commencer à courir dans la matrice, la mise à jour des paramètres à l' intérieur de la cuve
» « »
# 待后续补充
Sujet deux: trouver la médiane d'un tableau donné.
« » «
Idée: un grand tas de racines, un peu de racine tas, de maintenir un
équilibre! » « »
# 待后续补充