中位值是排序列表中心的值。對於中位數,我們需要按升序或降序對列表進行排序。
例如以3,5,2,7,3
這個數列作為輸入列表。要找出中位數,首先我們將它重新排序為2,3,3,5,7
,找到位置3
,即:((5 + 1)/ 2)
是3
,所以這個列表中的中位值是3
。
該演算法的實現程式如下 -
#include <stdio.h>
void swap(int *p,int *q) {
int t;
t=*p;
*p=*q;
*q=t;
}
void sort(int a[],int n) {
int i,j,temp;
for(i=0;i<n-1;i++) {
for(j=0;j<n-i-1;j++) {
if(a[j]>a[j+1])
swap(&a[j],&a[j+1]);
}
}
}
int main() {
int a[] = {6,3,8,5,1};
int n = 5;
int sum,i;
sort(a,n);
n = (n+1) / 2 - 1; // -1 as array indexing in C starts from 0
printf("Median = %d ", a[n]);
return 0;
}
執行上面範例程式碼,得到以下結果 -
Median = 5