二分法查找积分对应等级

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
 
/**
  * 二分法查找积分对应等级
  *
  * @param int $score 积分
  * @param array $filter 积分规则
  *
  * @return array $filter
  */
 
 
$filter  array (
     array ( 'level'  => 1,  'min'  => 1,  'max'  => 50),
     array ( 'level'  => 2,  'min'  => 51,  'max'  => 110),
     array ( 'level'  => 3,  'min'  => 111,  'max'  => 180),
     array ( 'level'  => 4,  'min'  => 181,  'max'  => 260),
     array ( 'level'  => 5,  'min'  => 261,  'max'  => 500)
);
 
 
function  level_search( $score $filter )
{   
     $half  floor ( count ( $filter ) / 2);  // 取出中間数
 
     // 判断积分在哪个区间
     if  ( $score  <=  $filter [ $half  - 1][ 'max' ]) {
         $filter  array_slice ( $filter , 0 ,  $half );
     else  {
         $filter  array_slice ( $filter $half  count ( $filter ));
     }
 
     // 继续递归直到只剩一个元素
     if  ( count ( $filter ) != 1) {
         $filter  = level_search( $score $filter );
     }
 
     return  $filter ;
}
 
 
 
 
$result  = level_search(240,  $filter );
$ret  = current( $result );
print_r( $ret [ 'level' ]);



本文转自 IT阿飞 51CTO博客,原文链接:http://blog.51cto.com/itafei/1888451
相关文章
|
3月前
|
存储 算法 搜索推荐
百万考生分数如何排序 - 计数排序
百万考生分数如何排序 - 计数排序
24 0
|
6天前
|
算法 测试技术 C#
【最大值线段树】【二分查找】2286. 以组为单位订音乐会的门票
【最大值线段树】【二分查找】2286. 以组为单位订音乐会的门票
|
9天前
|
算法
每日一题:LeetCode-LCR 179. 查找总价格为目标值的两个商品
每日一题:LeetCode-LCR 179. 查找总价格为目标值的两个商品
|
9月前
|
Python
使用Python实现商品价格区间设置和排序
使用Python实现商品价格区间设置和排序
231 0
|
8月前
|
算法
算法练习Day43|● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
算法练习Day43|● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
|
9月前
|
前端开发
检索业务:排序和价格区间及库存
检索业务:排序和价格区间及库存
|
10月前
|
Java
利用if语句求解成绩等级问题
利用if语句求解成绩等级问题
83 0
|
10月前
分数等级划分
分数等级划分
42 0
|
11月前
|
算法
红包随机算法,给定一定的金额,一定的人数,保证每个人都能随机获得一定的金额。...
红包随机算法,给定一定的金额,一定的人数,保证每个人都能随机获得一定的金额。...
129 0
【题型总结】等差数列覆盖区间问题
【题型总结】等差数列覆盖区间问题
84 0
【题型总结】等差数列覆盖区间问题