顺序统计量和中位数

顺序统计量和中位数

---雨竹清风

顺序统计量:i个顺序统计量是指该集合中第i个小的元素。

最小值是第一个顺序统计量,而最大值时第n个顺序统计量。

中位数:是有序集合中中间元素,当元素的个数是奇数时则其中位数是?(n+1)/2?;当元素的个数是偶数时则其中位数是(n+1)/2

怎么得到最大值和最小值?

当我们独立的找出最大值和最小值,假设一共n个数,则要想找到最大值和最小值,需要与剩余的n-1个元素一一比较,那么就需要比较n-1个元素,即比较n-1次。最大值和最小值那就需要2(n-1)次比较。

而我们不想要这么多次数才能找出最大值与最小值,所以我们需要将其改进,对这组数同时寻找最大值和最小值。

若该组元素的个数为偶数个,那么我们一对一对的进行比较。即先比较前两个元素,大者赋给最大值,小者赋给最小值;然后再取一对元素进行比较,大者与最大值相比较,若比最大值大则修改最大值;小者与最小值相比较,若比最小值还小则修改最小值。这样我们比较下来一共需要3((n-2)/2) + 1次比较即可。因为我们首先进行了一次比较,然后一对一对的比较一共(n-2)/2对元素,每一对需要比较3次,所以后面的(n - 2)/2对元素一共做了3(n - 2)/2。所以一共做了3((n-2)/2) + 1=(3n/2)  - 2次比较。

若元素的个数是奇数个,那么我们先取一个数作为最大值和最小值,然后取一对进行比较,直到结束为止。若是奇数个元素,一共需要3(n - 2)/2次比较。

例子:从集合1,6,8,9,5,11中找出最大值和最小值

1)首先取出前2个元素1和6进行比较,大者赋值为最大值,小者赋给最小值。

1

6

8

9

5

11

Max = 6,Min = 1

2)取下一对元素先进行比较,大的与最大值进行比较,小的与最小值比较。

1

6

8

9

5

11

9 > 8则9 与Max = 6比较,9 > 6则修改最大值,Max = 9;

8与Min = 1进行比较,8 > 1所以不用修改。

3)取下一对元素先进行比较,大的与最大值进行比较,小的与最小值比较。

1

6

8

9

5

11

11 > 5则11 与Max = 9比较,11 > 9则修改最大值,Max = 11;

5与Min = 1进行比较,5 > 1所以不用修改。

经过3次就将最大值和最小值都求出来了。

怎么求顺序统计量呐?

本文介绍的是select算法。

算法描述:

1)      将输入的元素的集合每5个元素划分成一组,一共划分成?n/5?组。

2)      找出每组中的中位数,然后再找中位数的中位数x。

3)      用中位数的中位数x做主元,做一次划分(快排)。

4)      确定x所在的位置k(从1开始),找第i个顺序统计量,若i < k,则从左半区找第i小元素;若i > k则从右半区找第i-k小元素,这是一个不断递归的过程。

例子:

给定集合5,13,90,95,98,86,40,80,74,24,43,77,38,找第6顺序统计量。

1)  划分组

5,13,90,95,98     86,40,80,74,24     43,77,38

2)  找中位数的中位数

5,13,90,95,98     86,40,80,74,24     43,74,38

中位数的中位数43

3)  用中位数43做主元做一次划分

结果为:

5,13,40,24,38,43,90,80,95,74,77,98,86

4)  找第6顺序统计量

43是在6号位置,所以是第6顺序统计量。若找的是第8顺序统计量,则从右半区去递归的寻找第8顺序统计量。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值