我使用快速选择算法解决了这个问题。现在我想使用快速排序和选择排序算法来实现这一点。
所以,你想要的只是排序和应用中位数的两种实现?
def selection_sort(arr):
for i in range(len(arr)):
smallest_ind = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[smallest_ind]:
smallest_ind = j
arr[i], arr[smallest_ind] = arr[smallest_ind], arr[i]
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[0]
i = 0
for j in range(len(arr)-1):
if arr[j+1] < pivot:
arr[j+1],arr[i+1] = arr[i+1],arr[j+1]
i += 1
arr[0],arr[i] = arr[i],arr[0]
left = quick_sort(arr[:i])
right = quick_sort(arr[i+1:])
left.append(arr[i])
return left + right
def median(arr):
n = len(arr)
return (arr[n//2] + arr[(n-1)//2]) / 2
现在测试功能:
nums = [5, 8, 4, 1, 2, 5]
quick_sorted = quick_sort(nums)
selection_sorted = nums.copy()
selection_sort(selection_sorted)
median_quicksort = median(quick_sorted)
median_selection_sort = median(selection_sorted)
他们都给出了预期的结果4.5
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句