本文主要是介绍[URAL 1100]Final Standings(排序技巧),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题目描述】:
给你n(1<=n<=150000)组数,每组数有两个id和m(0<=m<=100),让你按照以m为关键字冒泡排序的顺序输出。
【题目分析】:
这个题的关键在于他要你按照冒泡排序的顺序输出。我们知道任意一个nlogn的排序算法都无法保证原数中的两个数相对位置不变。所以,就不能依靠快速排序等更快的排序算法来进行运算。
其实这个题的题眼在这:(0<=m<=100)
这让我们不得不想到桶排序。我们把这100种可能的情况记做一个个桶,然后我们来检验,进行桶排序。其实我们根本就可以按照降序来进行枚举m的值,然后将等于m的这组数输出出来,这样也就可以保证相对位置的不便。
这样反倒简单,代码仅14行。
复杂度O(100n)
【代码】:
这篇关于[URAL 1100]Final Standings(排序技巧)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!