使用快速排序、快速选择方法和选择排序 Python 计算排序数组的中位数

舒沃31

我使用快速选择算法解决了这个问题。现在我想使用快速排序和选择排序算法来实现这一点。

AboAmmar

所以,你想要的只是排序和应用中位数的两种实现?

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章