zoukankan      html  css  js  c++  java
  • go 使用sort 进行多重排序

    type Combination struct {
        Group   string
        OrderNo int32
        Model   []string // 3+3  3+1+2 7选择3
        F       float64
        G       float64
        //专业覆盖率
        ProfessionalRate float64
    }
    
    type CombinationSort struct {
        combinationList []core.Combination
    }
    
    func (t CombinationSort) Len() int {
        return len(t.combinationList)
    }
    func (t CombinationSort) Swap(i, j int) {
        t.combinationList[i], t.combinationList[j] = t.combinationList[j], t.combinationList[i]
    }
    
    /*
    1、将各组合根据组合的分数值F从小到大进行排序。
    2、如果F值相等则根据组合的难度系数值G从小到大进行排序。
    3、如果难道系数值也相等,根据所在省份专业覆盖率,从大到小排序。
    4、假如出现极端情况,则学科组合默认排序展示。
    */
    
    func (t CombinationSort) Less(i, j int) bool {
        if t.combinationList[i].F != t.combinationList[j].F {
            return t.combinationList[i].F < t.combinationList[j].F
        }
        if t.combinationList[i].G != t.combinationList[j].G {
            return t.combinationList[i].G < t.combinationList[j].G
        }
        if t.combinationList[i].ProfessionalRate != t.combinationList[j].ProfessionalRate {
            return t.combinationList[i].ProfessionalRate > t.combinationList[j].ProfessionalRate
        }
        if t.combinationList[i].OrderNo != t.combinationList[j].OrderNo {
            return t.combinationList[i].OrderNo < t.combinationList[j].OrderNo
        }
        return false
    }
    
    //实际排序使用
    //四重重排序选出最合适的选科组合
    sort.Sort(CombinationSort{combinationArray})
    stay hungry stay foolish!
  • 相关阅读:
    Linux文件和目录
    Android/ios手机销售榜
    项目开发流程
    游戏签到系统测试点
    项目上线后出现问题,该如何解决?
    公交地铁出行测试点
    初学测试
    测试用例的优先级
    Django的MVT模式与MVC模式
    JWT安装配置
  • 原文地址:https://www.cnblogs.com/chongyao/p/15766096.html
Copyright © 2011-2022 走看看