基于java的延号排序方法,使用权重


权重排序(java)Q:我们去饭店排队等号吃饭,每天最多100桌客人,这100桌客人拿到的排队号是不会重复的(1-100)。如果叫号一阵子没人应答,这桌客人就要被延号三桌。如果延号的情况比较多,饭店就很难根据排队号来准确的排序了,那么如何保证排序始终是对的呢?

Clue:不用排队号排序,而拓展出依赖排序号的权重(排队号*容量=权重)每当客人被延号就找出他们往后数两桌的客人的权重,在这个基础上+1,这样就算每桌客人都被延号也可以保证按权重排序不会乱了

import java.util.ArrayList;
import java.util.List;

public class WeightSort {

    public void Test(){

        List<Integer> voList = new ArrayList();
        for(int i=0; i < 30; i++){
            voList.add(i);
        }
        Integer QuqueStatus = 10;
        Integer getWeightResult = this.updateWaitQueue(voList,QuqueStatus);
        System.out.println(getWeightResult);
    }

    private Integer updateWaitQueue(List<Integer> voList,Integer QuqueStatus) {

        int FirstMiss = 10;
        //获取有序的appoId集合
        List<Integer> appoIdList = new ArrayList();
        for(int i=0; i < voList.size(); i++){
            appoIdList.add(voList.get(i));
        }
        Integer nowDOAppId = 1;
        Integer nowIndex = appoIdList.indexOf(nowDOAppId);
        Integer targetIndex = null;

        if(FirstMiss==QuqueStatus){

            if(nowIndex == voList.size() - 1){
                targetIndex = nowIndex + 1;
            }
            else{
                targetIndex = nowIndex + 2;
            }
        }
        Integer getWeightResult =0;
        //
        if(voList.size() != 1 && null != targetIndex){
            getWeightResult = this.getNewWeight(targetIndex);
        }
        return getWeightResult;

    }
    //增加权重
    private Integer getNewWeight(Integer targetIndex){
       //参数校验省略

        Integer nowNewWeight = targetIndex ++;
        return nowNewWeight;
    }
}
发布了21 篇原创文章 · 获赞 4 · 访问量 1367

猜你喜欢

转载自blog.csdn.net/smile001isme/article/details/100783825