static object Solve() { var(n, k) = Read2(); var s = Console.ReadLine(); var r = new List <char>(); var comp = Comparer2 <int> .Create(i => s[i], i => i); var set = new IndexedMultiSet <int>(comp); for (int i = 0; i < n - k; i++) { set.Add(i); } var t = -1; for (int i = n - k; i < n; i++) { set.Add(i); while (set.GetFirst() < t) { set.RemoveAt(0); } t = set.RemoveAt(0); r.Add(s[t]); } return(string.Join("", r)); }
public ImmutableArray <T> Sort(Comparison <T> comparison) { Requires.NotNull(comparison, nameof(comparison)); var self = this; return(self.Sort(Comparer2 <T> .Create(comparison))); }
/// <summary> /// 通过[战魂类型 + 战魂性格]二分快速查表 /// </summary> /// <param name="petType">战魂类型</param> /// <param name="petCharacter">战魂性格</param> /// <returns></returns> public static PetRecommendDataBase Query(this List <PetRecommendDataBase> sorted, uint petType, uint petCharacter) { var key = new PetRecommendDataBase() { petType = petType, petCharacter = petCharacter }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(PetRecommendDataBase)); }
/// <summary> /// 通过[索引ID + 每日使用次数]二分快速查表 /// </summary> /// <param name="dwID">索引ID</param> /// <param name="useTimes">每日使用次数</param> /// <returns></returns> public static IncreaseDataBase Query(this List <IncreaseDataBase> sorted, uint dwID, uint useTimes) { var key = new IncreaseDataBase() { dwID = dwID, useTimes = useTimes }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(IncreaseDataBase)); }
/// <summary> /// 通过[ID + 索引]二分快速查表 /// </summary> /// <param name="dwID">ID</param> /// <param name="indexID">索引</param> /// <returns></returns> public static LandAndFarmDataBase Query(this List <LandAndFarmDataBase> sorted, uint dwID, uint indexID) { var key = new LandAndFarmDataBase() { dwID = dwID, indexID = indexID }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(LandAndFarmDataBase)); }
/// <summary> /// 通过[索引ID + 状态]二分快速查表 /// </summary> /// <param name="wdID">索引ID</param> /// <param name="wdState">状态</param> /// <returns></returns> public static HomeLandViewDatabase Query(this List <HomeLandViewDatabase> sorted, ushort wdID, ushort wdState) { var key = new HomeLandViewDatabase() { wdID = wdID, wdState = wdState }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(HomeLandViewDatabase)); }
/// <summary> /// 通过[编号 + 等级]二分快速查表 /// </summary> /// <param name="id">编号</param> /// <param name="lv">等级</param> /// <returns></returns> public static HeartSkillDataBase Query(this List <HeartSkillDataBase> sorted, uint id, uint lv) { var key = new HeartSkillDataBase() { id = id, lv = lv }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(HeartSkillDataBase)); }
/// <summary> /// 通过[鼓舞类型 + 次数]二分快速查表 /// </summary> /// <param name="inspireType">鼓舞类型</param> /// <param name="inspireIndex">次数</param> /// <returns></returns> public static InspireDataBase Query(this List <InspireDataBase> sorted, uint inspireType, uint inspireIndex) { var key = new InspireDataBase() { inspireType = inspireType, inspireIndex = inspireIndex }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(InspireDataBase)); }
/// <summary> /// 通过[职业 + 等级]二分快速查表 /// </summary> /// <param name="job">职业</param> /// <param name="suitlv">等级</param> /// <returns></returns> public static GridStrengthenSuitDataBase Query(this List <GridStrengthenSuitDataBase> sorted, uint job, uint suitlv) { var key = new GridStrengthenSuitDataBase() { job = job, suitlv = suitlv }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(GridStrengthenSuitDataBase)); }
/// <summary> /// 通过[BuffID + 等级]二分快速查表 /// </summary> /// <param name="dwBuffID">BuffID</param> /// <param name="dwLevel">等级</param> /// <returns></returns> public static BuffUpgradeDataBase Query(this List <BuffUpgradeDataBase> sorted, ushort dwBuffID, ushort dwLevel) { var key = new BuffUpgradeDataBase() { dwBuffID = dwBuffID, dwLevel = dwLevel }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(BuffUpgradeDataBase)); }
/// <summary> /// 通过[玩家等级 + 日常ID]二分快速查表 /// </summary> /// <param name="dwLv">玩家等级</param> /// <param name="dwID">日常ID</param> /// <returns></returns> public static RewardFindDataBase Query(this List <RewardFindDataBase> sorted, uint dwLv, uint dwID) { var key = new RewardFindDataBase() { dwLv = dwLv, dwID = dwID }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(RewardFindDataBase)); }
/// <summary> /// 通过[编号 + 等级]二分快速查表 /// </summary> /// <param name="wdID">编号</param> /// <param name="wdLevel">等级</param> /// <returns></returns> public static SkillDatabase Query(this List <SkillDatabase> sorted, ushort wdID, ushort wdLevel) { var key = new SkillDatabase() { wdID = wdID, wdLevel = wdLevel }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(SkillDatabase)); }
/// <summary> /// 通过[主类ID + 子类ID]二分快速查表 /// </summary> /// <param name="mainID">主类ID</param> /// <param name="childID">子类ID</param> /// <returns></returns> public static RankTypeDataBase Query(this List <RankTypeDataBase> sorted, uint mainID, uint childID) { var key = new RankTypeDataBase() { mainID = mainID, childID = childID }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(RankTypeDataBase)); }
/// <summary> /// 通过[大类ID + 细类ID]二分快速查表 /// </summary> /// <param name="ID">大类ID</param> /// <param name="SubID">细类ID</param> /// <returns></returns> public static ConsignmentCateIDConf Query(this List <ConsignmentCateIDConf> sorted, uint ID, uint SubID) { var key = new ConsignmentCateIDConf() { ID = ID, SubID = SubID }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(ConsignmentCateIDConf)); }
/// <summary> /// 通过[等级 + 宠物ID]二分快速查表 /// </summary> /// <param name="level">等级</param> /// <param name="petID">宠物ID</param> /// <returns></returns> public static PetUpGradeDataBase Query(this List <PetUpGradeDataBase> sorted, uint level, uint petID) { var key = new PetUpGradeDataBase() { level = level, petID = petID }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(PetUpGradeDataBase)); }
/// <summary> /// 通过[坐骑ID + 等级]二分快速查表 /// </summary> /// <param name="rideId">坐骑ID</param> /// <param name="level">等级</param> /// <returns></returns> public static RideFeedData Query(this List <RideFeedData> sorted, uint rideId, uint level) { var key = new RideFeedData() { rideId = rideId, level = level }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(RideFeedData)); }
/// <summary> /// 通过[装备ID + 精炼等级]二分快速查表 /// </summary> /// <param name="equipId">装备ID</param> /// <param name="refineLev">精炼等级</param> /// <returns></returns> public static EquipRefineDataBase Query(this List <EquipRefineDataBase> sorted, uint equipId, byte refineLev) { var key = new EquipRefineDataBase() { equipId = equipId, refineLev = refineLev }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(EquipRefineDataBase)); }
/// <summary> /// 通过[大类 + 小类]二分快速查表 /// </summary> /// <param name="firID">大类</param> /// <param name="secID">小类</param> /// <returns></returns> public static BibleDataBase Query(this List <BibleDataBase> sorted, uint firID, uint secID) { var key = new BibleDataBase() { firID = firID, secID = secID }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(BibleDataBase)); }
/// <summary> /// 通过[武魂ID + 等级]二分快速查表 /// </summary> /// <param name="id">武魂ID</param> /// <param name="level">等级</param> /// <returns></returns> public static WeaponSoulUpgradeDataBase Query(this List <WeaponSoulUpgradeDataBase> sorted, uint id, uint level) { var key = new WeaponSoulUpgradeDataBase() { id = id, level = level }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(WeaponSoulUpgradeDataBase)); }
/// <summary> /// 通过[职业 + 性别]二分快速查表 /// </summary> /// <param name="professionID">职业</param> /// <param name="sexID">性别</param> /// <returns></returns> public static SelectRoleDataBase Query(this List <SelectRoleDataBase> sorted, uint professionID, uint sexID) { var key = new SelectRoleDataBase() { professionID = professionID, sexID = sexID }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(SelectRoleDataBase)); }
/// <summary> /// 通过[职业 + 等级]二分快速查表 /// </summary> /// <param name="dwJob">职业</param> /// <param name="dwLevel">等级</param> /// <returns></returns> public static RobotDataBase Query(this List <RobotDataBase> sorted, uint dwJob, uint dwLevel) { var key = new RobotDataBase() { dwJob = dwJob, dwLevel = dwLevel }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(RobotDataBase)); }
/// <summary> /// 通过[SkillID + 等级]二分快速查表 /// </summary> /// <param name="skillID">SkillID</param> /// <param name="lv">等级</param> /// <returns></returns> public static ClanSkillDataBase Query(this List <ClanSkillDataBase> sorted, uint skillID, uint lv) { var key = new ClanSkillDataBase() { skillID = skillID, lv = lv }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(ClanSkillDataBase)); }
/// <summary> /// 通过[ID + 时装档次]二分快速查表 /// </summary> /// <param name="base_id">ID</param> /// <param name="suitLv">时装档次</param> /// <returns></returns> public static SuitDataBase Query(this List <SuitDataBase> sorted, uint base_id, uint suitLv) { var key = new SuitDataBase() { base_id = base_id, suitLv = suitLv }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(SuitDataBase)); }
/// <summary> /// 通过[宠物品质 + 成长状态]二分快速查表 /// </summary> /// <param name="quality">宠物品质</param> /// <param name="growStatus">成长状态</param> /// <returns></returns> public static PetGuiYuanDataBase Query(this List <PetGuiYuanDataBase> sorted, uint quality, uint growStatus) { var key = new PetGuiYuanDataBase() { quality = quality, growStatus = growStatus }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(PetGuiYuanDataBase)); }
/// <summary> /// 通过[背包ID + 解锁序号]二分快速查表 /// </summary> /// <param name="packId">背包ID</param> /// <param name="gridIndex">解锁序号</param> /// <returns></returns> public static UnlockStoreDataBase Query(this List <UnlockStoreDataBase> sorted, ushort packId, ushort gridIndex) { var key = new UnlockStoreDataBase() { packId = packId, gridIndex = gridIndex }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(UnlockStoreDataBase)); }
/// <summary> /// 通过[副本ID + 波数]二分快速查表 /// </summary> /// <param name="copyId">副本ID</param> /// <param name="waveId">波数</param> /// <returns></returns> public static CopyTargetDataBase Query(this List <CopyTargetDataBase> sorted, uint copyId, uint waveId) { var key = new CopyTargetDataBase() { copyId = copyId, waveId = waveId }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(CopyTargetDataBase)); }
public void Sort(Comparison <T> comparison) { Requires.NotNull(comparison, nameof(comparison)); if (Count > 1) { // Array.Sort does not have an overload that takes both bounds and a Comparison. // We could special case _count == _elements.Length in order to try to avoid // the IComparer allocation, but the Array.Sort overload that takes a Comparison // allocates such an IComparer internally, anyway. Array.Sort(_elements, 0, _count, Comparer2 <T> .Create(comparison)); } }
static void Main() { var n = int.Parse(Console.ReadLine()); var ss = Array.ConvertAll(new bool[n], _ => Console.ReadLine()); var comp = Comparer2 <string> .Create(s => s.TrimStart('0').Length, s => s.TrimStart('0'), s => - s.Length); var set = new IndexedMultiSet <string>(comp); foreach (var s in ss) { set.Add(s); } Console.WriteLine(string.Join("\n", set)); }
private void SortListBox(ListBox list, ComboBox combo) { List <string> buff_list = new List <string>(); foreach (string i in list.Items) { buff_list.Add(i); } switch (combo.SelectedIndex) { case 0: buff_list.Sort(); break; case 1: Comparer1 comp1 = new Comparer1(); buff_list.Sort(comp1); break; case 2: Comparer2 comp2 = new Comparer2(); buff_list.Sort(comp2); break; case 3: Comparer3 comp3 = new Comparer3(); buff_list.Sort(comp3); break; default: return; } list.Items.Clear(); foreach (string i in buff_list) { list.Items.Add(i); } list.Update(); }
static void Main(string[] args) { var heapSort = new HeapSortStrategy(); var shellSort = new ShellSortStrategy(); var comparer1 = new Comparer1(); var comparer2 = new Comparer2(); var fractions = new List <Fraction>(); fractions.Add(new Fraction(1, 2)); fractions.Add(new Fraction(-1, 2)); fractions.Add(new Fraction(1, 3)); fractions.Add(new Fraction(10, 2)); fractions.Add(new Fraction(11, 3)); Console.WriteLine("Heap Sort Source:"); foreach (var item in fractions) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); Console.WriteLine(); var result = new List <Fraction>(); //////// heapSort.SortArray(out result, ref fractions, SortOrder.BYINCREASING, comparer1, null); foreach (var item in result) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); heapSort.SortArray(out result, ref fractions, SortOrder.BYINCREASING, comparer2, null); foreach (var item in result) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); Console.WriteLine(); //DECREASING heapSort.SortArray(out result, ref fractions, SortOrder.BYDECREASING, comparer1, null); foreach (var item in result) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); heapSort.SortArray(out result, ref fractions, SortOrder.BYDECREASING, comparer2, null); foreach (var item in result) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); ////// Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); //////// var fractions2 = new List <Fraction>(); fractions2.Add(new Fraction(1, 2)); fractions2.Add(new Fraction(-1, 2)); fractions2.Add(new Fraction(1, 3)); fractions2.Add(new Fraction(10, 2)); fractions2.Add(new Fraction(11, 3)); Console.WriteLine("Shell Sort Source"); foreach (var item in fractions2) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); Console.WriteLine(); shellSort.SortArray(out result, ref fractions2, SortOrder.BYINCREASING, comparer1, null); foreach (var item in result) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); shellSort.SortArray(out result, ref fractions2, SortOrder.BYINCREASING, comparer2, null); foreach (var item in result) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); Console.WriteLine(); //DECREASING shellSort.SortArray(out result, ref fractions2, SortOrder.BYDECREASING, comparer1, null); foreach (var item in result) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); shellSort.SortArray(out result, ref fractions2, SortOrder.BYDECREASING, comparer2, null); foreach (var item in result) { Console.Write($"{item.ToString()} "); } Console.WriteLine(); Console.ReadLine(); }