我正在尝试定义一个中值函数,该函数使用数字列表并从列表中返回中位数。如果列表为空,那么我想返回None。要计算中位数,我需要在对列表进行排序后找到列表的中间索引。不要使用内置功能。 SURVEY_RESULTS = [1.5,1,2,1.5,2,3,1,1,1,2]
def median(SURVEY_RESULTS):
length = 0
order = sorted(SURVEY_RESULTS)
我不确定现在如何使用索引来确定中位数。
答案 0 :(得分:0)
这是我的实现方式:
def QuickSort(myList,start,end):
if start < end:
i,j = start,end
base = myList[i]
while i < j:
while (i < j) and (myList[j] >= base):
j = j - 1
myList[i] = myList[j]
while (i < j) and (myList[i] <= base):
i = i + 1
myList[j] = myList[i]
myList[i] = base
QuickSort(myList, start, i - 1)
QuickSort(myList, j + 1, end)
return myList
def median(l):
half = len(l) // 2
return (l[half] + l[~half])/2 # Use reverse index
SURVEY_RESULTS = [1.5, 1, 2, 1.5, 2, 3, 1, 1, 1, 2]
# Sort first
QuickSort(SURVEY_RESULTS, 0, len(SURVEY_RESULTS)-1)
result = median(SURVEY_RESULTS)
print (result)