一个简单排序

本文介绍了一种针对小规模数据集的实时伤害排名算法。该算法通过每次插入操作对整个列表进行排序来实现玩家伤害值的即时更新,并确保列表维持在限定长度内。

适用于小规模的排序 每一次插入都对整个数组排序


private static List<DevilTrialDmgVo> rankList = new ArrayList<DevilTrialDmgVo>();

    public static int sort(DevilTrialDmgVo dmgVo) {
        int resultIndex = -1;
        boolean inserted = false;

        for (int i = 0; i < rankList.size(); i++) {
            DevilTrialDmgVo userInList = rankList.get(i);
            if(userInList.getRoleID().equals(dmgVo.getRoleID())) {
                rankList.remove(i);
                i--;
                continue;
            }
            if(!inserted) {
                if(dmgVo.getDamageVal() > userInList.getDamageVal()) {
                    rankList.add(i,dmgVo);
                    resultIndex = i;
                    inserted = true;
                    i++;
                    userInList.setRank(i + 1);
                    continue;
                }
            }
            userInList.setRank(i+1);
        }
        int size  =rankList.size();
        if(!inserted && size < 999) {
            resultIndex = size;
            rankList.add(dmgVo);
        }
        if(size > 999) {
            rankList.remove(size - 1);
        }
        dmgVo.setRank(resultIndex + 1);
        return  resultIndex;
    }




/**
 * Created by TeemoWang on 2015/10/8.
 */
public class DevilTrialDmgVo {

    private String roleID;

    private long damageVal;

    private int rank;

    public String getRoleID() {
        return roleID;
    }

    public void setRoleID(String roleID) {
        this.roleID = roleID;
    }

    public long getDamageVal() {
        return damageVal;
    }

    public void setDamageVal(long damageVal) {
        this.damageVal = damageVal;
    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值