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!
  • 相关阅读:
    使用MOCK对象进行单元测试
    软件项目管理的圣经人月神话(中)
    java中使用MD5进行计算摘要
    Windows平台安装Bugzilla(上)
    dom4j学习总结(二)
    深入解析ATL(第二版ATL8.0)(2.12.2节)
    深入了解JUnit 4
    java中关于时间日期操作的常用函数
    使用XStream需注意的问题
    Windows平台安装Bugzilla(下)
  • 原文地址:https://www.cnblogs.com/chongyao/p/15766096.html
Copyright © 2011-2022 走看看